|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Случайные окна - все вопросы. |
|
Случайные окна - все вопросы.
|
Ветеран Сообщения: 842 |
Профиль | Отправить PM | Цитировать
Не могу понять вроде бы простую вещь, сначало я зделал так
ControlFocus("Select Destination Directory","","Edit1") Sleep(100) Send($VST & "\ChrisHeinBass") ControlClick("Select Destination Directory","","Button1","left",1,37,11) Sleep(100) ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If WinExists("Install") Then ControlClick("Install","","Button1","left",1,37,11) ; это окно реагирует на то, что целевая директория существует, ; с тупым вопросом - Are You Sure? Yes/No... ; В другом случае окно Install даже не появляется! Sleep(100) EndIf ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ControlClick("Choose Destination Location","","Button1","left",1,37,11) Sleep(100) Я начал думать в чём тут дело, и как мне показалось, что в блок If надо включить альтернативный ход ControlFocus("Select Destination Directory","","Edit1") Sleep(100) Send($VST & "\ChrisHeinBass") ControlClick("Select Destination Directory","","Button1","left",1,37,11) Sleep(100) If WinExists("Install") Then ControlClick("Install","","Button1","left",1,37,11) Sleep(100) Else ; вот так! ControlClick("Choose Destination Location","","Button1","left",1,37,11) Sleep(100) EndIf ControlFocus("Select Destination Directory","","Edit1") Sleep(100) Send($VST & "\ChrisHeinBass") ControlClick("Select Destination Directory","","Button1","left",1,37,11) Sleep(100) If WinExists("Install") Then ControlClick("Install","","Button1","left",1,37,11) Sleep(100) Else ControlClick("Choose Destination Location","","Button1","left",1,37,11) Sleep(100) EndIf ; добавил как и было ControlClick("Choose Destination Location","","Button1","left",1,37,11) Sleep(100) И как бы некогда зависать над этим, дело всё остальное ждёт. ЗЫ Давайте тут поговорим об защите от всяких случайных pop-up windows, чтоб найти способы борьбы |
|
------- Отправлено: 19:09, 21-02-2009 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Я нашёл одно экзотическое решение. Хотя поп-апы обычно и связанны с чеком директрий, так что думаю пойдётъ!
ControlFocus("Select Destination Directory","","Edit1") Sleep(100) Send($VST & "\ChrisHeinBass") ; здесь мы только выбираем путь, ; но не создаём, поэтому не известно есть ли там папки или нету! ControlClick("Select Destination Directory","","Button1","left",1,37,11) Sleep(100) ; здесь мы закрываем тупое окно If FileExists($VST & "\ChrisHeinBass") Then ControlClick("Install","","Button1","left",1,37,11) Sleep(100) EndIf ; и идём далше... ControlClick("Choose Destination Location","","Button1","left",1,37,11) Sleep(100) If WinExists("Install") Then Ведь окно Install не висит в ожидании, поэтому чекать его нет смысла, а если добавить WinWaitActive("Install") тоже неизвестно что из этого выйдет, так как окно не всегда актуально... |
------- Отправлено: 20:46, 21-02-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата semiono:
Вариант 1. (предпочтительный) Идентифицируем текущее активное окно и запускаем нужный обработчик, порядок следования не важен, но пользователь или другой процесс не должны в процессе установки менять активное окно: 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 Для каждого окна проверяем его наличие в системе, и при нахождении запускаем нужный обработчик. Порядок перебора обработчиков должен быть от дочерних - к родительским (родительские для дочерних существуют всегда). Необходимо обеспечить уникальность окон во всей системе, а не только среди окон мастера. |
|
Отправлено: 10:26, 24-02-2009 | #3 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Нужно пару моментов придумать, теперь видимо самому зделать добавочные окна, правда пока туго соображаю что самому надо...
Вообщем 1. Надо остановить скрипт, причём полностью до ожидания юзера. Например, управление происходит, над обычным инсталлером, для автоматизации действий. Однако, для ввода альтернативного пути установки, хотелось бы дать возможность юзеру нажать кнопку Browse... в инсталлере и ввести путь как обычно это бывает. Одним словом, надо остановить скрипт на окне, и дождаться действий пользователя. А потом продолжить работу скрипта. Желательно без ожидания по времени, а полный останов! 2. Это как бы попутный вопрос, как можно создать своё окно из AutoIt3, наподобие диалогов выбора пути установки? То-есть, чтоб было скажем поле Edit для ввода пути, а лучше и кнопка Browse..., так как лень бывает юзеру часто руками напбирать путь. Вообщем, чтоб из этого окна скрипт мог получить данные в переменной которую далее можно уже использовать, для различных подстановок... |
------- Отправлено: 22:56, 24-02-2009 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
|
Последний раз редактировалось amel27, 26-02-2009 в 04:07. Отправлено: 06:06, 25-02-2009 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Info - IP - INFO [Все вопросы] | gurWin | Защита компьютерных систем | 221 | 16-12-2010 14:02 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Свернуть все окна (Shows Desktop)! | Mirotvorez | Microsoft Windows NT/2000/2003 | 4 | 05-01-2010 01:51 | |
[решено] Определить все окна одной прграммы | shyra1976 | AutoIt | 4 | 18-05-2009 09:07 | |
Свернуть все окна с клавиатуры (в ноутбуке) | shark21 | Хочу все знать | 4 | 24-12-2004 10:46 |
|