Цитата semiono:
Ведь окно Install не висит в ожидании, поэтому чекать его нет смысла,
а если добавить WinWaitActive("Install") тоже неизвестно что из этого выйдет,
так как окно не всегда актуально... »
|
если есть возможность
уникально идентифицировать ВСЕ окна мастера установки, то можно организовать выбор обработчика в одном рабочем цикле, вот два варианта, у каждого свои плюсы и минусы:
Вариант 1. (предпочтительный)
Идентифицируем текущее активное окно и запускаем нужный обработчик, порядок следования не важен, но пользователь или другой процесс не должны в процессе установки менять активное окно:
Код:
![Выделить весь код](images/misc/selectcode.png)
While 1
$sWinTitle = WinGetTitle("[active]") ; Заголовок активного окна
$sWinText = WinGetText("[active]") ; Текст активного окна
Select
Case $sWinTitle = "Select Destination Directory"
; код обработки окна 1
Case $sWinTitle = "Install"
; код обработки окна 2
Case $sWinTitle = "Choose Destination Location"
; код обработки окна 3
Case Else
ExitLoop
EndSelect
Sleep(500)
WEnd
Вариант 2.
Для каждого окна проверяем его наличие в системе, и при нахождении запускаем нужный обработчик. Порядок перебора обработчиков должен быть от дочерних - к родительским (родительские для дочерних существуют всегда). Необходимо обеспечить уникальность окон во всей системе, а не только среди окон мастера.
Код:
![Выделить весь код](images/misc/selectcode.png)
While 1
Select
Case WinExists("Choose Destination Location")
; код обработки окна 1
Case WinExists("Select Destination Directory")
; код обработки окна 2
Case WinExists("Install")
; код обработки окна 3
Case Else
ExitLoop
EndSelect
Sleep(500)
WEnd