Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 36
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот похожая функция, бнемного облегченная, с одним прогрессбаром.
_FileCopyEx($Source, $Dest)

Одно плохо, процесс копирования нельзя отменить. Уважаемые знатоки, подскажите, как добавить клавишу отмены копирования.
С правкой тела функций разумеется.
Спасибо.


Func _FileCopyEx($sSource, $sDest)
If Not FileExists($sSource) Then Return SetError(1)
ProgressOn("Идет копирование","","",@DesktopWidth-320,@DesktopHeight-181,2)
Local $hCopyProgressRoutine = DllCallbackRegister("_CopyProgressRoutine", "int", _
"uint64;uint64;uint64;uint64;dword;dword;ptr;ptr;ptr")
DllCall("kernel32.dll", "int", "CopyFileExA", _
"str", $sSource, _
"str", $sDest, _
"ptr", DllCallbackGetPtr($hCopyProgressRoutine), _
"ptr", 0, _
"int", 0, _
"int", 0)
DllCallBackFree($hCopyProgressRoutine)
Sleep(1000)
ProgressOff()
EndFunc

Func _CopyProgressRoutine($TotalFileSize, $TotalBytesTransferred, $StreamSize, $StreamBytesTransferred, $dwStreamNumber, $dwCallbackReason, $hSourceFile, $hDestinationFile, $lpData)
Local $iPrecent = $TotalBytesTransferred/$TotalFileSize * 100
ProgressSet($iPrecent, "Выполнено " & Round($iPrecent, 1) & " %")
EndFunc

Отправлено: 22:57, 20-07-2009 | #21