|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вставка прогресс бара в функцию |
|
Вставка прогресс бара в функцию
|
$AutoITer Сообщения: 446 |
Профиль | Отправить PM | Цитировать Имеется функция и в нее нужно вставить прогресс бар, и что бы действительно отображал процесс копирования
GUI построен так Всю программу я не стал выкладывать, т.к. она объемная... |
|
------- Отправлено: 22:55, 03-06-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 11943499:
Цитата 11943499:
Хм, забавно, на практике всё намного хуже чем я думал - дочерний скрипт тоже не обрабатывает HotKeySet пока процесс копирование не завершится очень странный баг... |
||
------- Отправлено: 01:04, 24-07-2009 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать А что мешает использовать _IsPressed? Оно нормально проверяется и срабатывает.
#include <Misc.au3> Global Const $PROGRESS_CONTINUE = 0 Global Const $PROGRESS_CANCEL = 1 Global Const $PROGRESS_STOP = 2 Global Const $PROGRESS_QUIET = 3 Global $hDll = DllOpen("User32.dll") _FileCopyEx("E:\Downloads\Video.avi", "D:\Dest\Video.avi", 8+1) Func _FileCopyEx($sSource, $sDest, $iFlags=0) If Not FileExists($sSource) Then Return SetError(1) ProgressOn("_FileCopyEx() Demo", "Копирование файла...") Local $sFileName = StringRegExpReplace($sSource, "^.*\\", "") Local $sFilePath = StringRegExpReplace($sDest, "\\[^\\]*$", "") If Not BitAND($iFlags, 1) And FileExists($sDest) Then ProgressSet(0, "Ошибка копирования файла (" & $sFileName & "):" & @CRLF & "* Перезапись файла не разрешена") Sleep(2000) ProgressOff() Return SetError(2) EndIf If (BitAND($iFlags, 8) And Not DirCreate($sFilePath)) Or (Not StringInStr(FileGetAttrib($sFilePath), "D")) Then ProgressSet(0, "Ошибка копирования файла (" & $sFileName & ")" & @CRLF & "* Не найдена папка назначения") Sleep(2000) ProgressOff() Return SetError(3) EndIf Local $hCopyProgressRoutine = DllCallbackRegister("_CopyProgressRoutine", "int", _ "uint64;uint64;uint64;uint64;dword;dword;ptr;ptr;str") Local $aRet = DllCall("Kernel32.dll", "int", "CopyFileExA", _ "str", $sSource, _ "str", $sDest, _ "ptr", DllCallbackGetPtr($hCopyProgressRoutine), _ "str", $sFileName, _ "int", 0, _ "int", 0) DllCallBackFree($hCopyProgressRoutine) Sleep(1000) ProgressOff() Return 1 EndFunc Func _CopyProgressRoutine($TotalFileSize, $TotalBytesTransferred, $StreamSize, $StreamBytesTransferred, $dwStreamNumber, $dwCallbackReason, $hSourceFile, $hDestinationFile, $lpData) Local $iPrecent = $TotalBytesTransferred/$TotalFileSize * 100 ProgressSet($iPrecent, "Проценты: " & Round($iPrecent, 1) & " %", "Копирую: " & $lpData) ;Abort on "Ctrl + Shift + A" If _IsPressed("10", $hDll) And _IsPressed("11", $hDll) And _IsPressed("41", $hDll) Then ProgressSet($iPrecent, "Проценты: " & Round($iPrecent, 1) & " % (Прервано пользователем)") Sleep(1000) Return ProcessClose(@AutoItPID) ;Return $PROGRESS_CANCEL EndIf Return $PROGRESS_CONTINUE EndFunc |
------- Отправлено: 01:23, 24-07-2009 | #42 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
Последний раз редактировалось 11943499, 24-07-2009 в 13:55. Отправлено: 13:04, 24-07-2009 | #43 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать А темка-то живет !
Вот еще вопросец, Как с помощью этой функции копировать файл с перетиранием системного и только для чтения ? По умолчанию она не перетирает такие файлы. |
Отправлено: 16:51, 24-07-2009 | #44 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 17:17, 24-07-2009 | #45 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
Отправлено: 18:40, 24-07-2009 | #46 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать Взял прогресс бар из этой темы:
Copy With Progress Example.au3 Copy_With_Progress_Incl.au3 Обеденил в один и с конвертировал его в "exe",теперь нужно сделать так: Запуск будет через cmd\bat. И ещё при копирование не доступен рабочий стол,если можно исправить это,так как копирование очень большое. За ранее спасибо. |
------- Отправлено: 17:59, 06-04-2014 | #47 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата crimes:
|
|
Отправлено: 18:11, 06-04-2014 | #48 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать Извеняюсь.
И если можно ещё его как то облегчить,и для общего понятия там файлов около 40гб файлы разные от 1 байта до 3гб. |
------- Последний раз редактировалось crimes, 06-04-2014 в 18:45. Отправлено: 18:40, 06-04-2014 | #49 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата crimes:
Цитата crimes:
|
||
Отправлено: 20:46, 06-04-2014 | #50 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] [PHP] Прогресс-бар (счетчик игроков) | D_Master | Вебмастеру | 3 | 27-03-2009 18:41 | |
[решено] Прогресс бар | semiono | AutoIt | 17 | 24-03-2009 23:18 | |
вставка jpg | kozerogg | Хочу все знать | 2 | 04-10-2004 14:28 | |
Подскажите функцию в C++ | dimakus | Программирование и базы данных | 2 | 01-04-2004 14:57 | |
Отключить функцию. | Simich | Непонятные проблемы с Железом | 14 | 04-07-2003 16:14 |
|