|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вставка прогресс бара в функцию |
|
Вставка прогресс бара в функцию
|
$AutoITer Сообщения: 446 |
Профиль | Отправить PM | Цитировать Имеется функция и в нее нужно вставить прогресс бар, и что бы действительно отображал процесс копирования
GUI построен так Всю программу я не стал выкладывать, т.к. она объемная... |
|
------- Отправлено: 22:55, 03-06-2009 |
Новый участник Сообщения: 36
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать 11943499,
Куски кода заключайте в соот-вующие теги. Цитата 11943499:
|
|
------- Отправлено: 23:35, 20-07-2009 | #22 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
есть работающая функция копирования с прогрессбаром. Компильнул и пользуешься. Не хватает клавиши или кнопки отмены. Использование горячей клавиши не идет, или запускающая ею функция не корректна для прерывания прогрессбара. Умнее чем ProgressOff ( ) не накопал, нл оно не работает. Вот такие важные детали. |
|
Отправлено: 00:54, 21-07-2009 | #23 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата 11943499:
опять же, идея все та же - нарисовать окно, в нем пргресс бар, прикрутить эту функцию и вставить кнопку отмена Creat0R, а ты не делал пример на с отменой? что то было кажется, да найти не могу... |
|
------- Отправлено: 01:36, 21-07-2009 | #24 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 11943499:
#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\Some big file.avi", "C:\Some big file.avi") Func _FileCopyEx($sSource, $sDest) If Not FileExists($sSource) Then Return SetError(1) ProgressOn("_FileCopyEx() Demo", "Копирование файла: " & StringRegExpReplace($sSource, "^.*\\", "")) 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) & " %") If _IsPressed("1B", $hDll) Then ProgressSet($iPrecent, "Проценты: " & Round($iPrecent, 1) & " % (Прервано пользователем)") Return $PROGRESS_CANCEL EndIf Return $PROGRESS_CONTINUE EndFunc Цитата 11943499:
Цитата proxy:
|
|||
------- Отправлено: 02:54, 21-07-2009 | #25 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
------- Отправлено: 04:13, 21-07-2009 | #26 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата proxy:
|
|
------- Отправлено: 04:36, 21-07-2009 | #27 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
Отправлено: 08:19, 21-07-2009 | #28 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата 11943499:
|
|
------- Отправлено: 08:47, 21-07-2009 | #29 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Процесс копирования виснет, а не закрывается. |
|
Отправлено: 10:01, 21-07-2009 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] [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 |
|