Страница: 1 |
Де б его найти контрол для копирования папок, файлов с индикацией (прогресом). или может есть возможность при копировании через FSO узнавать текущее состояние ?
Найди контрол mscomctl и воспользуйся progressbar Страница: 1 |
Вопрос: Контрол для копирования с индикацией ...... ?
Добавлено: 11.06.04 10:20
Автор вопроса: Grayich | Web-сайт:
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #1
Добавлено: 11.06.04 10:29
Раза два уже точно обсуждали.
'in a form (Form1)
Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim Ret As Long
'set the graphics mode to persistent
Me.AutoRedraw = True
'print some text
Me.Print "Click the form to abort the filecopy"
'show the form
Me.Show
'start copying
Ret = CopyFileEx("c:\verybigfile.ext", "c:\copy.ext", AddressOf CopyProgressRoutine, ByVal 0&, bCancel, COPY_FILE_RESTARTABLE)
'show some text
Me.Print "Filecopy completed " + IIf(Ret = 0, "ERROR/ABORTED)", "successfully"
End Sub
Private Sub Form_Click()
'cancel filecopy
bCancel = 1
End Sub
'in a module
Public Const PROGRESS_CANCEL = 1
Public Const PROGRESS_CONTINUE = 0
Public Const PROGRESS_QUIET = 3
Public Const PROGRESS_STOP = 2
Public Const COPY_FILE_FAIL_IF_EXISTS = &H1
Public Const COPY_FILE_RESTARTABLE = &H2
Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
Public bCancel As Long
Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal StreamBytesTransferred As Currency, ByVal dwStreamNumber As Long, ByVal dwCallbackReason As Long, ByVal hSourceFile As Long, ByVal hDestinationFile As Long, ByVal lpData As Long) As Long
'adjust the caption
Form1.Caption = CStr(Int((TotalBytesTransferred * 10000) / (TotalFileSize * 10000) * 100)) + "% complete..."
'allow user input
DoEvents
'continue filecopy
CopyProgressRoutine = PROGRESS_CONTINUE
End Function
Номер ответа: 2
Автор ответа:
DBC
Вопросов: 1
Ответов: 1
Профиль | | #2
Добавлено: 11.06.04 15:03
Номер ответа: 3
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #3
Добавлено: 11.06.04 17:53
2 DBC очень смешно
Номер ответа: 4
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #4
Добавлено: 13.06.04 13:57
2 Pashenko Одно плохо, копирует тока файлы
Номер ответа: 5
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #5
Добавлено: 14.06.04 12:11
Дето был на сайте тут пример по копированию с помощью API с использованием стандартного окна копирования
ВОПРОС:
а как там убрать кнопку Cencel
??
Номер ответа: 6
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #6
Добавлено: 17.06.04 11:24
неужели не у кого небыло такой "проблеммы" ?
Номер ответа: 7
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #7
Добавлено: 18.06.04 11:56
вот исход который меня устраивает
Option Explicit
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Sys As SHFILEOPSTRUCT
Private Const FO_COPY = &H2& 'Copies the files specified in the
'pFrom member to the location
'specified in the pTo member.
Private Const FO_DELETE = &H3& 'Deletes the files specified in pFrom
'(pTo is ignored.)
Private Const FO_MOVE = &H1& 'Moves the files specified in pFrom
'to the location specified in pTo.
Private Const FO_RENAME = &H4& 'Renames the files specified in pFrom
Private Const FOF_SILENT = &H4
Private Const FOF_SIMPLEPROGRESS = &H100
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_NOCONFIRMMKDIR = &H200
Private Const FOF_RENAMEONCOLLISION = &H8
Private Sub Form_Load()
Me.Show
Sys.wFunc = FO_COPY
Sys.pFrom = "c:\temp\*.*"
Sys.pTo = "d:\temp"
Sys.hwnd = Form1.hwnd
Sys.fFlags = FOF_NOCONFIRMATION + FOF_SIMPLEPROGRESS
Call SHFileOperation(Sys)
End Sub
НО ! как убрать кнопку "Отмена" ?????????