Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Ожидание появления Next скриптом. Как?

Ответить
Настройки темы
[решено] Ожидание появления Next скриптом. Как?

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Есть такой кусок скрипта который тискает по кнопкам для установки программы:

Код: Выделить весь код
WinWait				('Установка ...','','')
ControlClick			('Установка ...','',101)
Проблема в том, что когда появляется окно 'Установка ...' то кнопка под номером 101 не активна, но скрипт все равно ее нажимает и работает дальше. А кнопка 101 становится активна через несколько секунд. Как записать этот скрипт чтобы он ждал когда кнопка 101 станет активной и лишь тогда ее нажал???
Какой либо таймер ожидания не подходит, так как время появления кнопки рандомное...

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 16:54, 06-02-2011

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Pozia,
Попробуйте так:
Код: Выделить весь код
;...
$hWin = WinWait('Установка ...', '', 5)
If $hWin Then
    While Not ControlCommand($hWin, '', 101, 'IsEnabled', '')
        Sleep(100)
    WEnd
    ControlClick($hWin, '', 101)
EndIf
;...

Последний раз редактировалось madmasles, 06-02-2011 в 18:56.


Отправлено: 17:04, 06-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


madmasles, по-моему секундной паузы слишком много. мне кажется хватит и 50-100 мс

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 17:25, 06-02-2011 | #3


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


kaster,
Цитата Pozia:
А кнопка 101 становится активна через несколько секунд. »
И зачем торопиться?

Отправлено: 18:14, 06-02-2011 | #4


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


madmasles, да, но даже если она становится активной сразу после последней проверки, то в любом случае ждать еще секунду пока настанет следующая проверка. но этом имхо. 50-100 мс проц не нагрузят.

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 18:30, 06-02-2011 | #5


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


kaster,
Конечно, Вы правы, поменял.

Отправлено: 18:55, 06-02-2011 | #6


Аватара для Bodya.N

Пользователь


Сообщения: 106
Благодарности: 40

Профиль | Отправить PM | Цитировать


Еще вот так можно:
Код: Выделить весь код
;Ждем активации кнопки "далее" и ...нажимаем ее
$e = ControlCommand($hWin, '', 101, 'IsEnabled')
While $e=0
$e= ControlCommand($hWin, '', 101, 'IsEnabled')
WEnd
Send("{ENTER}")

Отправлено: 19:29, 06-02-2011 | #7


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


madmasles, почему то не срабатывает, думаю потому, что до того как кнопка активна ана имеет другую цифру, а после 101. Моей кнопки 101 соответствует надпись на ней &Next >. А как подправить код чтобы на эту надпись скрипт нажимал?

Bodya.N, по вашему скрипту ошибка выскакивает line -1

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 19:55, 06-02-2011 | #8


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата Pozia:
почему то не срабатывает »
А как не срабатывает?
Может, так:
Код: Выделить весь код
;...
$hWin = WinWait('Установка ...', '', 5)
If $hWin Then
    While 1
        If ControlCommand($hWin, '', 101, 'IsVisible', '') And _
                ControlCommand($hWin, '', 101, 'IsEnabled', '') Then ExitLoop
        Sleep(100)
    WEnd
    ControlClick($hWin, '', 101)
EndIf
;...
Или так:
Код: Выделить весь код
;...
$hWin = WinWait('Установка ...', '', 5)
If $hWin Then
    While 1
        If StringInStr(WinGetText($hWin), 'Next') And _
                ControlCommand($hWin, '', 101, 'IsEnabled', '') Then ExitLoop
        Sleep(100)
    WEnd
    ControlClick($hWin, '', 101)
EndIf
;...

Отправлено: 20:20, 06-02-2011 | #9


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


madmasles,и так не работает. скрипт просто висит в памяти. В связи с тем, что исходные данные я дал на обум, привожу сейчас точные, что дает автоит виндовз инфо:

Код: Выделить весь код
>>>> Window <<<<
Title:	SolidWorks 2011 SP02 Setup
Class:	MsiDialogCloseClass
Position:	370, 273
Size:	539, 431
Style:	0x14CA0000
ExStyle:	0x00040100
Handle:	0x0057043A

>>>> Control <<<<
Class:	Button
Instance:	1
ClassnameNN:	Button1
Advanced (Class):	[CLASS:Button; INSTANCE:1]
ID:	41613
Text:	&Next >
Position:	336, 361
Size:	80, 26
ControlClick Coords:	30, 16
Style:	0x50032001
ExStyle:	0x00000000
Handle:	0x00030574

>>>> Mouse <<<<
Position:	739, 678
Cursor ID:	2
Color:	0xB4E1F9

>>>> StatusBar <<<<

>>>> Visible Text <<<<
&Next >
&Cancel
< &Back
&Help
The SolidWorks® Setup Wizard will install SolidWorks 2011 SP02 on your computer. To continue, click Next.
NewBinary1
Welcome to the SolidWorks 2011 SP02 Setup Wizard


>>>> Hidden Text <<<<
NOTE that the SolidWorks 2011 SP02 web download is installed on this system and will be upgraded by this installation.
может по им вы поможете лучше? нужно просто нажать кнопку Нэкст

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 20:39, 06-02-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Ожидание появления Next скриптом. Как?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как дождаться РЕАЛЬНОГО появления окна 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




 
Переход