[решено] Рекурсия в компилированном скрипте

Аватара пользователя
Cuba

[решено] Рекурсия в компилированном скрипте

Сообщение Cuba »

Написал скрипт установки Alcohol 120 %

Скрипт работает если запустить из контекстного меню (Run script)

Компилирую его, запускаю и он начинает запускаться бесконечно.

Т.е. открывается копия этого же компилированного скрипта бесконечно, комп тормозить начинает, спасает перезагрузка компа.

Это что за прикол такой ?

Вот скрипт:



PHP код:

Код: Выделить всё

#cs ----------------------------------------------------------------------------



 AutoIt Version: 3.3.0.0

 Author:         JoKeR



 Script Function:

    Alcohol setup



#ce ----------------------------------------------------------------------------



Run("ALCOHOL - 120% 5.0 BLU-RAY.exe")



WinWait("[CLASS:#32770;TITLE:Alcohol 120% Version 5.0]")

ControlClick("[CLASS:#32770]","","Button2")



WinWait("[CLASS:#32770;TITLE:Alcohol 120% Version 5.0]")

ControlClick("[CLASS:#32770]","","Button2")



WinWait("[CLASS:#32770;TITLE:Alcohol 120% Version 5.0]")

ControlClick("[CLASS:#32770]","","Button2")



WinWait("[CLASS:#32770;TITLE:Alcohol 120% Version 5.0]")

ControlClick("[CLASS:#32770]","","Button2")



WinWait("[CLASS:#32770;TITLE:Alcohol 120% Version 5.0]","Alcohol 120% wurde auf Ihrem Computer installiert")

ControlClick("[CLASS:#32770]","","Button4")

ControlClick("[CLASS:#32770]","","Button5")

ControlClick("[CLASS:#32770]","","Button2")



Run("C:\Program Files\Alcohol Soft\Alcohol 120\Alcohol.exe")



WinWait("[CLASS:TAboutDlg;TITLE:О программе - Alcohol 120%]")

ControlClick("[CLASS:TAboutDlg]","","TButton2")

Send("+a+d+e-+y798-O+c3+b-+f834-17+d0")



WinWait("[CLASS:TForm;TITLE:Регистрация]")

ControlClick("[CLASS:TForm]","","TButton1")



WinWait("[CLASS:#32770;TITLE:Регистрация]","Серийный номер принят")

ControlClick("[CLASS:#32770]","","Button1")



WinWait("[CLASS:TAboutDlg;TITLE:О программе - Alcohol 120%]")

WinClose("[CLASS:TAboutDlg;TITLE:О программе - Alcohol 120%]")



WinWait("[CLASS:TMainFrame;TITLE:Alcohol 120%]")

WinClose("[CLASS:TMainFrame;TITLE:Alcohol 120%]") 



Аватара пользователя
amel27

Re: [решено] Рекурсия в компилированном скрипте

Сообщение amel27 »

Цитата Cuba:



Компилирую его, запускаю и он начинает запускаться бесконечно
[решено] Рекурсия в компилированном скрипте




А имя скрипта не «ALCOHOL - 120% 5.0 BLU-RAY.au3» случайно? Изображение После компилляции он становится точно таким же как и запускаемый софт, вот и получается что он запускает сам себя.
Аватара пользователя
Cuba

Re: [решено] Рекурсия в компилированном скрипте

Сообщение Cuba »

Цитата Cuba:



Имя Alcohol.exe
[решено] Рекурсия в компилированном скрипте




Ясно, ну тогда это очевидно, что Run() определяет первую часть (до пробела) как имя файла (в нашем случае это ALCOHOL, т.е имя скрипта), а остальное как параметры ком. строки, можно попробовать так решить проблему:





Код:

Код: Выделить всё

#cs ---------------------------------------------------------------------------- 
 AutoIt Version: 3.3.0.0 
 Author:         JoKeR 
 Script Function: 
    Alcohol setup 
#ce ---------------------------------------------------------------------------- 
Run('"ALCOHOL - 120% 5.0 BLU-RAY.exe"')
.....

Тогда будет запускать как целое имя файла.



Хотя я бы не стал вовсе называть так свой скрипт, можно просто Installer_For_Alcohol.exe Изображение
Аватара пользователя
Creat0R

Re: [решено] Рекурсия в компилированном скрипте

Сообщение Creat0R »

Спасибо.

Проблема решена.

Но есть ещё вопрос.

Всё устанавливается нормально, только возникает трудность в закрытии самого алкоголя после установки.

Между этими строками



PHP код:

Код: Выделить всё

WinWait("[CLASS:TAboutDlg;TITLE:О программе - Alcohol 120%]")
WinClose("[CLASS:TAboutDlg;TITLE:О программе - Alcohol 120%]")

WinWait("[CLASS:TMainFrame;TITLE:Alcohol 120%]")
WinClose("[CLASS:TMainFrame;TITLE:Alcohol 120%]") 






нужно подождать некоторое количество времени, но время не думаю что у всех будет одинаковое, думаю зависит от процессора.

Как можно отловить когда уже можно закрывать окно, если в AutoIt Window Info ничего не изменяется, хотя сначала


это окно


Изображение




пустое, только через это неизвестное время появляется информация об устройствах.

Думаю вы меня поняли Изображение
Аватара пользователя
Cuba

Re: [решено] Рекурсия в компилированном скрипте

Сообщение Cuba »

Цитата Cuba:



нужно подождать некоторое количество времени
[решено] Рекурсия в компилированном скрипте




Подождать чего? Пока окно не закроется? Тогда WinWaitClose() Изображение
Аватара пользователя
Creat0R

Re: [решено] Рекурсия в компилированном скрипте

Сообщение Creat0R »

Cuba, Ну тогда нужно отслеживать закрытие этого Popup-окна, что Au3 Info Tool показывает на нём, есть класс/заголовок у него?
Аватара пользователя
amel27

Re: [решено] Рекурсия в компилированном скрипте

Сообщение amel27 »

Cuba, под рукой оказалась только v.1.4.8 (Build 1222), получилось где-то так:



Код:

Код: Выделить всё

; Ожидение появления окна обновления устройств
Do
    Sleep(100)
Until ControlCommand("[CLASS:TForm]", "", "[CLASS:TPanel; INSTANCE:1]", "IsVisible")
; Ожидение закрытия  окна обновления устройств
While ControlCommand("[CLASS:TForm]", "", "[CLASS:TPanel; INSTANCE:1]", "IsVisible")
    Sleep(100)
WEnd
Ответить

Вернуться в «AutoIt»