Войти

Показать полную графическую версию : Вставка прогресс бара в функцию


Страниц : [1] 2 3

Medic84
03-06-2009, 22:55
Имеется функция и в нее нужно вставить прогресс бар, и что бы действительно отображал процесс копирования
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


Всю программу я не стал выкладывать, т.к. она объемная...

Creat0R
03-06-2009, 23:30
Medic84,
Поищите в архивных темах, там было решение подобной задаче (копирование с отображением прогресса).

Medic84
04-06-2009, 12:28
Так, я то нашел, и оно впринципе работает, на не так как надо...

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% и то когда все закончится.
Я не знаю как вызвать из процесса копирования эти самые %

Creat0R
04-06-2009, 13:53
я то нашел, и оно впринципе работает, на не так как надо »
Это не то. Я и сам затрудняюсь найти тот самый пример, но есть он у меня в архивах на харде :)

Вопрос только вот в чём; что имеется в виду под «что бы действительно отображал процесс копирования»? Просто имитация прогресса, или реально отображение всего прогресса (включая имена файлов, оставшееся время и т.п.)?

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

Medic84
04-06-2009, 14:04
Вопрос только вот в чём; что имеется в виду под «что бы действительно отображал процесс копирования»? Просто имитация прогресса, или реально отображение всего прогресса (включая имена файлов, оставшееся время и т.п.)? »

Да, хотя бы просто реальное отображение прогресса....

Creat0R
04-06-2009, 14:09
Вот нашёл тот пример: http://forum.oszone.net/post-695975.html#post695975

Creat0R
04-06-2009, 14:14
Версия для последнего AutoIt (3.3.0.0).

Medic84
04-06-2009, 14:34
Ооооо вот это я понимаю настоящий программер!!! Вопрос $Parent_Handle = WinGetHandle("") - это что???

Creat0R
04-06-2009, 14:45
WinGetHandle("") - это что? »
Это идентификатор родительского окна, там (между "") можно подставить любой заголовок, к этому окну будет “приатаченно” окно прогресса.

Medic84
04-06-2009, 14:45
И еще. Не мог бы ты немного модифицировать твой "инклуд"(Или создать другой)? собственно хочется что бы можно было Эту папку архивировать и вынимать из архива. Название архива можно принять Название копируемой папки.

Creat0R
04-06-2009, 14:58
хочется что бы можно было Эту папку архивировать и вынимать из архива »
А при чём тут прогресс копирования?

Medic84
04-06-2009, 15:17
Просто я когда создавал осознавал что архивирование мне не осилить... Поэтому начал спрашивать про копирование.

P.S. А как правильно написать. Мне нужно что бы программа проверила Путь в GUICtrlRead($A2) и если в нем нет папки \players, то выводит ошибку
Так не работает
If Not FileExists(GUICtrlRead($A2)&"\players") Then Return SetError(1, 0, -1)

Creat0R
04-06-2009, 16:51
Поэтому начал спрашивать про копирование. »
И это является офтопиком.
Архивирование можно осуществить через консольную программу 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 (без расширения) тоже будет определена ошибка.

Medic84
04-06-2009, 17:06
Разобрался сам. И наверное последний вопрос. Уже 2 час бьюсь об это. Расскажу на русском языке.
При отсутствии папки \player msgbox выдает сообщение

If Not FileExists($Folder) Then MsgBox(4112,"Error", "Указана неверная папка!")

Но процесс продолжается. Не знаю еще как сделать. Думал поставить после

MsgBox(4112,"Error", "Указана неверная папка!")And EndFunc
Не проходит...

Medic84
04-06-2009, 20:50
Все! Спасибо Creat0R, я все сделал. Если хочешь посмотреть на программу, напиши сдесь. Я выложу.

Creat0R
04-06-2009, 21:22
Не проходит »
Эм... вот для того чтобы не гадать (проходит не проходит), справка по AutoIt и была написана ;).

Medic84
05-06-2009, 10:38
Ан нет. Не последний. Как вызвать окно выбора папок? Как вызвать выбор файлов знаю, а папок нет.

$file = FileOpenDialog("Выберите файл...",@ProgramFilesDir,"Zip (*.Zip)") - Вызов диалога Open

Medic84
05-06-2009, 12:45
Аааа.. Что здесь не так??? Уже все волосы на голове выдергал!

$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!

SyDr
05-06-2009, 15:08
Естественно.

StringReplace($Folder1,"G:\Bakcup", $A1)
Означает, прочесать строку $Folder1 на наличие в ней "G:\Bakcup" и если оно там есть - заменить на $A1

GUICtrlSetData ( $A1, $Folder1) вместо этого следует использовать

И ещё. Советую проверять. Вдруг в окне выбора папки нажата отмена.

Creat0R
05-06-2009, 15:30
Medic84,
Не надо всё кидать в кучу, есть вопросы разной тематики - создавайте соответственно новые темы (убедившись что подобной темы ещё нет).




© OSzone.net 2001-2012