PDA

Показать полную графическую версию : Закрыть окно


sov44
06-02-2014, 21:03
Во время включения компьютера не успевает загрузиться Miranda. Стоит плагин, который при ошибке подключения пытается подключиться вновь. В итоге имею подключенное соединение и окно, которое приходится каждый раз закрывать вручную.
Нужен скрипт Autoit, который из автозагрузки будет в течение 150 секунд проверять появление окна с ошибкой, если окно появилось, кликать ОК и завершать свою работу.
Попробовал написать сам, но код не работает
$STITLE = "Ошибка ICQ"
While 1
If WinWaitActive($STITLE, "", 150) Then
ControlFocus($STITLE, "", Button1)
Send("{OK}")
Else
Exit
EndIf
WEnd

Iska
06-02-2014, 23:11
sov44, хотелось бы понять, что это на самом деле значит:
Во время включения компьютера не успевает загрузиться Miranda. »
?

sov44
06-02-2014, 23:24
Миранда прописана в автозагрузку. Наверное правильнее будет написать, что сначала запускается миранда, затем у ПК появляется выход в интернет. Но не суть - вопрос по написанию скрипта.

Iska
07-02-2014, 00:03
Суть. Установите посредством групповой политики параметр «Всегда ожидать инициализации сети» (на память, как-то так). Либо просто сделайте отложенный запуск Miranda.

P.S. Хотите вместо решения реальной проблемы изобретать новые «подпорки» — дело, конечно, Ваше.

Cem
20-02-2014, 11:57
Попробовал написать сам, но код не работает»

Попробуй так:
$STITLE = "Ошибка ICQ"
$net_okna = 0
Do
$tut_okno = WinExists($STITLE) ; Проверяет наличие окна
Sleep (1000) ; Время ожидания перед следующей проверкой
Until $net_okna < $tut_okno ; Когда окно появилось...
ControlFocus($STITLE, "", Button1)
Send("{OK}") ; нажимается нужная кнопочка


Будь осторожен!!! Если окно не появится - этот цикл станет бесконечным.
Приведено, как пример, так сказать, для раздумий.

Вариант 2:
$STITLE = "Ошибка ICQ"
$tvoe_okno = WinWait($STITLE, "", 150) ; 150 таймаут в секундах
If Not $tvoe_okno Then
MsgBox(0, $tvoe_okno, 'Это окно, наверное, уже и не откроется. Уходим!')
Exit
EndIf
Sleep(1000) ; На 1 секунду показываем окно, перед тем как закрыть его.
WinClose($tvoe_okno)

Есть еще разные варианты и вариации.

Как по мне, то лучше убрать миранду из автозагрузки и написать скрипт, который будет дожидаться подключения к интернету и только при наличии подключения запустит миранду.

Cem
20-02-2014, 12:12
Этот скрипт будет закрывать окно об ошибке каждый раз, до тех пор, пока не появится окно о подключении к сети.

$STITLE = "Ошибка ICQ"
$STITLE2 = "ICQ В сети" ; Или что-то в этом роде
$net_okna = 0
Do
If WinExists($STITLE) Then ; Проверяет наличие окна об ошибке
ControlFocus($STITLE, "", Button1)
Send("{OK}")
EndIf
Sleep (1000) ; Время ожидания перед следующей проверкой
$tut_okno = WinExists($STITLE2) ; Проверяет наличие окна о подключении
Until $net_okna < $tut_okno ; Будет работать до тех пор пока не появится окно подключенной ICQ.

Ко времени не привязан, будь то 35 секунд, либо 151.




© OSzone.net 2001-2012