Показать полную графическую версию : Вставка прогресс бара в функцию
Имеется функция и в нее нужно вставить прогресс бар, и что бы действительно отображал процесс копирования
GUI построен так
$progress = GUICtrlCreateProgress(10,300,260,50)
Func Restore_Proc()
DirCopy(GUICtrlRead($A1), GUICtrlRead($A2), 1)
Run("Regedit.exe /s " & GUICtrlRead($A1) & "\key.reg")
EndFunc
Всю программу я не стал выкладывать, т.к. она объемная...
Medic84,
Поищите в архивных темах, там было решение подобной задаче (копирование с отображением прогресса).
Так, я то нашел, и оно впринципе работает, на не так как надо...
Func Backup_Proc()
GUICtrlSetData($progress, DirCopy(GUICtrlRead($A2), GUICtrlRead($A1), 1))
_RegExport("HKLM\Software\Activision\Call of Duty 4", "codkey", GUICtrlRead($A1) & "\key.reg")
EndFunc
Заполняется только 1% и то когда все закончится.
Я не знаю как вызвать из процесса копирования эти самые %
я то нашел, и оно впринципе работает, на не так как надо »
Это не то. Я и сам затрудняюсь найти тот самый пример, но есть он у меня в архивах на харде :)
Вопрос только вот в чём; что имеется в виду под «что бы действительно отображал процесс копирования»? Просто имитация прогресса, или реально отображение всего прогресса (включая имена файлов, оставшееся время и т.п.)?
P.S
А вариант с отображением системного диалога копирования подходит?
Вот пока пример для системного диалога:
_FileCopy("C:\Source", "C:\Dest")
Func _FileCopy($sSource, $sDest, $iShowConfirm=1, $iShowProgress=1)
Local Const $FOF_RESPOND_YES = 64
Local Const $FOF_NOCONFIRMATION = 16
Local Const $FOF_SIMPLEPROGRESS = 256
Local $iFlags = 0
If $iShowConfirm = 0 Then $iFlags = BitOR($iFlags, $FOF_NOCONFIRMATION)
If $iShowProgress <> 0 Then $iFlags = BitOR($iFlags, $FOF_SIMPLEPROGRESS)
If Not FileExists($sDest) Then DirCreate($sDest)
Local $oShell = ObjCreate("Shell.Application")
Local $oNameSpace = $oShell.NameSpace($sDest)
$oNameSpace.MoveHere($sSource, $iFlags)
EndFunc
Вопрос только вот в чём; что имеется в виду под «что бы действительно отображал процесс копирования»? Просто имитация прогресса, или реально отображение всего прогресса (включая имена файлов, оставшееся время и т.п.)? »
Да, хотя бы просто реальное отображение прогресса....
Вот нашёл тот пример: http://forum.oszone.net/post-695975.html#post695975
Версия для последнего AutoIt (3.3.0.0).
Ооооо вот это я понимаю настоящий программер!!! Вопрос $Parent_Handle = WinGetHandle("") - это что???
WinGetHandle("") - это что? »
Это идентификатор родительского окна, там (между "") можно подставить любой заголовок, к этому окну будет “приатаченно” окно прогресса.
И еще. Не мог бы ты немного модифицировать твой "инклуд"(Или создать другой)? собственно хочется что бы можно было Эту папку архивировать и вынимать из архива. Название архива можно принять Название копируемой папки.
хочется что бы можно было Эту папку архивировать и вынимать из архива »
А при чём тут прогресс копирования?
Просто я когда создавал осознавал что архивирование мне не осилить... Поэтому начал спрашивать про копирование.
P.S. А как правильно написать. Мне нужно что бы программа проверила Путь в GUICtrlRead($A2) и если в нем нет папки \players, то выводит ошибку
Так не работает
If Not FileExists(GUICtrlRead($A2)&"\players") Then Return SetError(1, 0, -1)
Поэтому начал спрашивать про копирование. »
И это является офтопиком.
Архивирование можно осуществить через консольную программу 7zip (http://7-zip.org). Ну или через COM-объект - Zip UDF (http://www.autoitscript.com/forum/index.php?showtopic=73425).
Так не работает »
Что именно тут не работает?
Можно ещё так проверить:
If Not StringInStr(FileGetAttrib(GUICtrlRead($A2) & "\players"), "D") Then Return SetError(1, 0, -1)
Это для надёжности, иначе при наличии файла (не папки) с именем player (без расширения) тоже будет определена ошибка.
Разобрался сам. И наверное последний вопрос. Уже 2 час бьюсь об это. Расскажу на русском языке.
При отсутствии папки \player msgbox выдает сообщение
If Not FileExists($Folder) Then MsgBox(4112,"Error", "Указана неверная папка!")
Но процесс продолжается. Не знаю еще как сделать. Думал поставить после
MsgBox(4112,"Error", "Указана неверная папка!")And EndFunc
Не проходит...
Все! Спасибо Creat0R, я все сделал. Если хочешь посмотреть на программу, напиши сдесь. Я выложу.
Не проходит »
Эм... вот для того чтобы не гадать (проходит не проходит), справка по AutoIt и была написана ;).
Ан нет. Не последний. Как вызвать окно выбора папок? Как вызвать выбор файлов знаю, а папок нет.
$file = FileOpenDialog("Выберите файл...",@ProgramFilesDir,"Zip (*.Zip)") - Вызов диалога Open
Аааа.. Что здесь не так??? Уже все волосы на голове выдергал!
$A1=GuiCtrlCreateInput("G:\Bakcup", 10, 180, 230, 20)
$A2=GuiCtrlCreateInput("G:\Call of Duty 4 - Modern Warfare\players", 10, 220, 230, 20)
Case $Button_A1
$Folder1 = FileSelectFolder("Выберите папку", "")
StringReplace($Folder1,"G:\Bakcup", $A1)
Case $Button_A2
$Folder2 = FileSelectFolder("Выберите папку", "")
StringReplace($Folder2,"G:\Call of Duty 4 - Modern Warfare\players", $A2)
Новый заданный путь не прописывается в Input!
Естественно.
StringReplace($Folder1,"G:\Bakcup", $A1)
Означает, прочесать строку $Folder1 на наличие в ней "G:\Bakcup" и если оно там есть - заменить на $A1
GUICtrlSetData ( $A1, $Folder1) вместо этого следует использовать
И ещё. Советую проверять. Вдруг в окне выбора папки нажата отмена.
Medic84,
Не надо всё кидать в кучу, есть вопросы разной тематики - создавайте соответственно новые темы (убедившись что подобной темы ещё нет).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.