Войти

Показать полную графическую версию : Как отследить появление сообщения в разных ОС


Str_ani_ck
26-07-2009, 19:19
У меня при установке программы на висте выскакивает сообщение о несовместимости данной программы с вистой, а на хр нет . А в скрипте я уже прописал

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") , если данного окна нет???

Creat0R
26-07-2009, 19:38
как мне быть если на хр этого окна нет, а скрипт затормозился на этой строчке 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")

beve
26-07-2009, 19:41
Можеш сделать ожидание в цикле появления или того или другого окна, и при появлении - выход из цикла и дальше по коду.

Creat0R
26-07-2009, 20:09
Ах да, совсем упустил из виду - название темы неудачное! Это форум по AutoIt, поэтому оно и так должно быть понятным, что нужна помощь по AutoIt.

SyDr
26-07-2009, 20:12
Ээээ.... А не проще проверить на какой системе, XP или Vista выполняется скрипт?
Смотрите макрос @OSVersion

Str_ani_ck
26-07-2009, 22:11
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

266903582
26-07-2009, 23:24
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 использовать, но это уже на твое усмотрение...

SyDr
26-07-2009, 23:40
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
While 0- Вот так скрипт идет дальше а с 1 стоит на месте???? Не понимаю что нужно

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
Хотя вместо send-ов надежнее будет controlsend использовать, но это уже на твое усмотрение...
Акак этим пользоваться
Допустим мне нужно нажать кнопку TAB
Я набираю команду Send("{TAB }")
А этим как пользоваться controlsend?

266903582
27-07-2009, 18:39
ControlSend ( "title", "text", controlID, "string" [, flag] )
ControlSend работает точно также, как Send за исключением того, что нажатия высылаются непосредственно в окно/управляющий элемент, а не только для активного окна.
Подробности в справке.




© OSzone.net 2001-2012