Отлов "случайных" окон
;ждем не более 2 секунд. Будет окно - отработаем с ним, нет - просто пойдем дальше
If WinWait("Installer Language","",2) Then
WinActivate("Installer Language")
WinWaitActive("Installer Language")
Send("{ENTER}")
EndIf
If WinExists('Регистрация FineReader 7.0','Пожалуйста') Then
WinActivate('Регистрация FineReader 7.0','Пожалуйста')
Send('{SPACE}')
ControlClick('Регистрация FineReader 7.0','Пожалуйста','Button4')
WinWaitActive('Регистрация','Внимание!')
Send('{ENTER}')
EndIf
;на протяжении выполнения тела скрипта каждые 500 мс (по ум. 250) будет выполняться ф-ция wfp AdlibEnable("wfp",500) ...
;тело скрипта
... Func wfp() If WinExists('Защита файлов Windows','Файлы') Then ControlClick('Защита файлов Windows','Файлы','Button3') WinWait('Защита файлов Windows','Вы отказались') ControlClick('Защита файлов Windows','Вы отказались','Button1') EndIf EndFunc
Действующий пример использования AdlibEnable (а также вызова своей ф-ции при выходе из скрипта Opt("OnExitFunc","MyExit")) можете посмотреть в моем скрипте для установки переводчика .
;достаем из реестра имя исполняемого файла браузера по умолчанию
$defaultbrowser = RegRead ('HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet','')
;ждем процесс браузера (проверка на наличие процесса в памяти производится каждые 250 мс
;на практике это означает, что окно браузера даже не успеет появиться)
ProcessWait ( $defaultbrowser )
;закрываем процесс браузера
ProcessClose ( $defaultbrowser )
;дожидаемся момента полной выгрузки процесса браузера из памяти (это не обязательно)
ProcessWaitClose ( $defaultbrowser )