|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вставка прогресс бара в функцию |
|
|
Вставка прогресс бара в функцию
|
|
$AutoITer Сообщения: 446 |
Имеется функция и в нее нужно вставить прогресс бар, и что бы действительно отображал процесс копирования
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 | |
|