Учебник по автоматической установке Windows XP

Отлов "случайных" окон


  • Если место появления окна известно

    ;ждем не более 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 )



    Содержание раздела