-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Str_ani_ck |
26-07-2009 19:19 1178269 |
Как отследить появление сообщения в разных ОС
У меня при установке программы на висте выскакивает сообщение о несовместимости данной программы с вистой, а на хр нет . А в скрипте я уже прописал
1 WinWaitActive("Не совместимость программы")
2 Send("{TAB 4}")
3 Sleep ( 200)
4 Send("{SPACE}")
5 Sleep ( 200)
6 Send("{TAB}")
7 Sleep ( 200)
8 Send("{RIGHT}")
9 Sleep ( 200)
10 Send("{ENTER}")
11 WinWaitActive("Ошибка лицензии AutoCAD 2007")
А вот как мне быть если на хр этого окна нет, а скрипт затормозился на этой строчке WinWaitActive("Не совместимость программы") , а мне нужно чтобы он перешел к строке WinWaitActive("Ошибка лицензии AutoCAD 2007") , если данного окна нет???
|
Цитата:
Цитата Str_ani_ck
как мне быть если на хр этого окна нет, а скрипт затормозился на этой строчке WinWaitActive("Не совместимость программы") »
|
Тут нужно либо ожидать другое окно, которое появляется/активируется далее (вне зависимости от того, есть ли сообщение несовместимости или нету), либо ожидать это окно но определённое время, ну или вообще в цикле всё это проверять...
Последний вариант:
Код:
While 1
If WinExists("Не совместимость программы") Then
Send("{TAB 4}")
Sleep(200)
Send("{SPACE}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{RIGHT}")
Sleep(200)
Send("{ENTER}")
ExitLoop
EndIf
If WinExists("Ошибка лицензии AutoCAD 2007") Then ExitLoop
WEnd
WinWaitActive("Ошибка лицензии AutoCAD 2007")
|
Можеш сделать ожидание в цикле появления или того или другого окна, и при появлении - выход из цикла и дальше по коду.
|
Ах да, совсем упустил из виду - название темы неудачное! Это форум по AutoIt, поэтому оно и так должно быть понятным, что нужна помощь по AutoIt.
|
Ээээ.... А не проще проверить на какой системе, XP или Vista выполняется скрипт?
Смотрите макрос @OSVersion
|
Str_ani_ck |
26-07-2009 22:11 1178420 |
Цитата:
Цитата Creat0R
While 1
If WinExists("Не совместимость программы") Then
Send("{TAB 4}")
Sleep(200)
Send("{SPACE}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{RIGHT}")
Sleep(200)
Send("{ENTER}")
ExitLoop
EndIf
If WinExists("Ошибка лицензии AutoCAD 2007") Then ExitLoop
WEnd
WinWaitActive("Ошибка лицензии AutoCAD 2007") »
|
Вставил это вместо своего куска скрипта , и скрипт тормозит на If WinExists("Не совместимость программы") Then
|
Str_ani_ck, попробуй так:
Код:
While 1
If WinExists("Не совместимость программы") Then f1()
If WinExists("Ошибка лицензии AutoCAD 2007") Then ExitLoop
WEnd
Winwait("Ошибка лицензии AutoCAD 2007")
WinActivate("Ошибка лицензии AutoCAD 2007")
;~ Дальше свое код
Func f1()
WinActivate("Не совместимость программы")
Send("{TAB 4}")
Sleep(200)
Send("{SPACE}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{RIGHT}")
Sleep(200)
Send("{ENTER}")
EndFunc
Хотя вместо send-ов надежнее будет controlsend использовать, но это уже на твое усмотрение...
|
Код:
If @OSVersion = "WIN_VISTA" Then
WinWaitActive("Не совместимость программы")
Send("{TAB 4}")
Sleep ( 200)
Send("{SPACE}")
Sleep ( 200)
Send("{TAB}")
Sleep ( 200)
Send("{RIGHT}")
Sleep ( 200)
Send("{ENTER}")
EndIf
WinWaitActive("Ошибка лицензии AutoCAD 2007")
|
Str_ani_ck |
27-07-2009 02:06 1178573 |
While 0- Вот так скрипт идет дальше а с 1 стоит на месте???? Не понимаю что нужно
Цитата:
Цитата 266903582
While 0
If WinExists("Не совместимость программы") Then f1()
If WinExists("Ошибка лицензии AutoCAD 2007") Then ExitLoop
WEnd
Winwait("Ошибка лицензии AutoCAD 2007")
WinActivate("Ошибка лицензии AutoCAD 2007")
;~ Дальше свое код
Func f1()
WinActivate("Не совместимость программы")
Send("{TAB 4}")
Sleep(200)
Send("{SPACE}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{RIGHT}")
Sleep(200)
Send("{ENTER}")
EndFunc »
|
|
Str_ani_ck |
27-07-2009 02:23 1178576 |
Хотя вместо send-ов надежнее будет controlsend использовать, но это уже на твое усмотрение...
Акак этим пользоваться
Допустим мне нужно нажать кнопку TAB
Я набираю команду Send("{TAB }")
А этим как пользоваться controlsend?
|
ControlSend ( "title", "text", controlID, "string" [, flag] )
ControlSend работает точно также, как Send за исключением того, что нажатия высылаются непосредственно в окно/управляющий элемент, а не только для активного окна.
Подробности в справке.
|
Время: 15:07.
© OSzone.net 2001-