![]() |
Случайные окна - все вопросы.
Не могу понять вроде бы простую вещь, сначало я зделал так
Код:
ControlFocus("Select Destination Directory","","Edit1") Я начал думать в чём тут дело, и как мне показалось, что в блок If надо включить альтернативный ход Код:
ControlFocus("Select Destination Directory","","Edit1") Код:
ControlFocus("Select Destination Directory","","Edit1") И как бы некогда зависать над этим, дело всё остальное ждёт. ЗЫ Давайте тут поговорим об защите от всяких случайных pop-up windows, чтоб найти способы борьбы :) |
Я нашёл одно экзотическое решение. Хотя поп-апы обычно и связанны с чеком директрий, так что думаю пойдётъ!
Код:
ControlFocus("Select Destination Directory","","Edit1") If WinExists("Install") Then Ведь окно Install не висит в ожидании, поэтому чекать его нет смысла, а если добавить WinWaitActive("Install") тоже неизвестно что из этого выйдет, так как окно не всегда актуально... |
Цитата:
Вариант 1. (предпочтительный) Идентифицируем текущее активное окно и запускаем нужный обработчик, порядок следования не важен, но пользователь или другой процесс не должны в процессе установки менять активное окно: Код:
While 1 Для каждого окна проверяем его наличие в системе, и при нахождении запускаем нужный обработчик. Порядок перебора обработчиков должен быть от дочерних - к родительским (родительские для дочерних существуют всегда). Необходимо обеспечить уникальность окон во всей системе, а не только среди окон мастера. Код:
While 1 |
Нужно пару моментов придумать, теперь видимо самому зделать добавочные окна, правда пока туго соображаю что самому надо...
Вообщем 1. Надо остановить скрипт, причём полностью до ожидания юзера. Например, управление происходит, над обычным инсталлером, для автоматизации действий. Однако, для ввода альтернативного пути установки, хотелось бы дать возможность юзеру нажать кнопку Browse... в инсталлере и ввести путь как обычно это бывает. Одним словом, надо остановить скрипт на окне, и дождаться действий пользователя. А потом продолжить работу скрипта. Желательно без ожидания по времени, а полный останов! 2. Это как бы попутный вопрос, как можно создать своё окно из AutoIt3, наподобие диалогов выбора пути установки? То-есть, чтоб было скажем поле Edit для ввода пути, а лучше и кнопка Browse..., так как лень бывает юзеру часто руками напбирать путь. Вообщем, чтоб из этого окна скрипт мог получить данные в переменной которую далее можно уже использовать, для различных подстановок... |
semiono
1. зависит от общего алгоритма, для приведенных выше примеров это соответствует пустому коду обработки окна типа Sleep(200), для стандартного ожидания можно использовать WinWaitClose()/WinWaitNotActive() 2. пример из справки: Код:
$var = FileSelectFolder("Choose a folder.", "") |
Время: 05:50. |
Время: 05:50.
© OSzone.net 2001-