Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Закрыть окно (http://forum.oszone.net/showthread.php?t=277280)

sov44 06-02-2014 21:03 2304294

Закрыть окно
 
Во время включения компьютера не успевает загрузиться 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 2304392

sov44, хотелось бы понять, что это на самом деле значит:
Цитата:

Цитата sov44
Во время включения компьютера не успевает загрузиться Miranda. »

?

sov44 06-02-2014 23:24 2304408

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

Iska 07-02-2014 00:03 2304465

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

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

Cem 20-02-2014 11:57 2312356

Цитата:

Цитата sov44
Попробовал написать сам, но код не работает»

Попробуй так:
Код:

$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 2312361

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

Код:

$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.


Время: 14:11.

Время: 14:11.
© OSzone.net 2001-