|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Ожидание появления Next скриптом. Как? |
|
[решено] Ожидание появления Next скриптом. Как?
|
Ветеран Сообщения: 2756 |
Профиль | Отправить PM | Цитировать Есть такой кусок скрипта который тискает по кнопкам для установки программы:
Проблема в том, что когда появляется окно 'Установка ...' то кнопка под номером 101 не активна, но скрипт все равно ее нажимает и работает дальше. А кнопка 101 становится активна через несколько секунд. Как записать этот скрипт чтобы он ждал когда кнопка 101 станет активной и лишь тогда ее нажал??? Какой либо таймер ожидания не подходит, так как время появления кнопки рандомное... |
|
------- Отправлено: 16:54, 06-02-2011 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Pozia,
А так: $sTitle = 'SolidWorks 2011' $iButton = 10 ;кол-во кнопок у Вас их явно меньше. $sButtonText = 'Next' $sID = '' $fYes = False $hWin = WinWait($sTitle, '', 5) If Not $hWin Then MsgBox(16, 'Error', 'Нет окна ' & $sTitle) Exit EndIf $iStart = TimerInit() While 1 If TimerDiff($iStart) > 30000 Then ExitLoop For $i = 1 To $iButton $sID = 'Button' & $i If StringInStr(ControlGetText($hWin, '', $sID), $sButtonText) And _ ControlCommand($hWin, '', $sID, 'IsEnabled', '') Then $fYes = True ExitLoop 2 EndIf Sleep(100) Next WEnd If $fYes Then ControlClick($hWin, '', $sID) Else MsgBox(16, 'Error', 'Время вышло, кнопку не нашли.') Exit EndIf |
Отправлено: 21:28, 06-02-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать madmasles, говорит время вышло, кнопку не нашли (
|
------- Отправлено: 21:42, 06-02-2011 | #12 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Pozia,
Дайте, пожалуйста, ссылку на SolidWorks 2011 SP02. |
Отправлено: 22:21, 06-02-2011 | #13 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать madmasles, в личку отправил
|
------- Отправлено: 22:33, 06-02-2011 | #14 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать madmasles, вот сумел так кнопку нажать:
Но так не интересно, ведь если окно по какой то причине будет неактивно (задел что то мышкой), то Enter будет нажат в пустоту. Если не ошибаюсь. Но если других вариантов не найдете, может хоть это приделайте к вашему последнему варианту? |
------- Отправлено: 07:42, 07-02-2011 | #15 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Pozia, ControlSend не требует активного окна. а вообще, если код
срабатывает, то можно долбится по нему в цикле через пока $ret не вернет 1. хотя, возможно, что отправка нажатия в неактивную кнопку считается успехом. надо проверять |
------- Отправлено: 08:31, 07-02-2011 | #16 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать kaster, а точный код можете написать? А то я не силен как. А методом тыка много времени уходит... И вечером попробую.
|
------- Отправлено: 08:59, 07-02-2011 | #17 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать в силу ОС, сам проверить не могу. пишу по памяти
надо проверить что возвращает ControlClick по неактивной кнопке. Если 1, то не сработает. Но, могу посоветовать в коде от madmasles вместо поиска кнопки сразу использовать нужный. $sTitle = 'SolidWorks 2011' $sID = '[CLASS:Button; INSTANCE:1]' $hWin = WinWait($sTitle, '', 5) $fYes = 0 If Not $hWin Then MsgBox(16, 'Error', 'Нет окна ' & $sTitle) Exit EndIf $iStart = TimerInit() While TimerDiff($iStart) < 30000 If ControlCommand($hWin, '', $sID, 'IsEnabled', '') Then $fYes = 1 ExitLoop EndIf Sleep(100) WEnd If $fYes Then ControlClick($hWin, '', $sID) Else MsgBox(16, 'Error', 'Время вышло, кнопку не нашли.') Exit EndIf |
------- Последний раз редактировалось kaster, 07-02-2011 в 20:58. Отправлено: 10:21, 07-02-2011 | #18 |
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать kaster, вот такие ошибки выскакивают
|
------- Последний раз редактировалось Pozia, 11-02-2011 в 22:12. Отправлено: 19:10, 07-02-2011 | #19 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Pozia, по поводу первой ошибки, это была конструкция, не готовый код. но пока оставим его.
а вот по второму, в спешке удалил лишнюю строку. поправил код. попробуй проверить теперь. |
------- Отправлено: 20:57, 07-02-2011 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как дождаться РЕАЛЬНОГО появления окна | NewOLDi | AutoIt | 12 | 03-11-2019 12:13 | |
[решено] Как скриптом проиграть видеофайл. | Vagac | AutoIt | 18 | 27-11-2010 14:06 | |
.NET - Ожидание завершения процесса | Efsey | Программирование и базы данных | 11 | 24-11-2010 19:16 | |
ожидание 3-5 минут перед тем как начать загружаться с CD/HDD | Intergo | Непонятные проблемы с Железом | 10 | 19-02-2010 15:19 | |
Как запретить RRAS ожидание входящих звонков? | abode | Microsoft Windows NT/2000/2003 | 0 | 01-07-2006 22:10 |
|