Что нового

Срипт останавливается

modnik

Знающий
Сообщения
138
Репутация
13
Вот это главный скрипт:
Код:
For $i = 1 to 55
   
    RunWait("*.exe")
  RunWait("*.exe")
  
Next


В экзешниках сам бот. При работе он постоянно переключается с одного ока на другое. Очень редко, возникает ситуация, когда бот просто останавливается. Пауза не горит, ошибок нет. Дело в том, что при переключении между окнами программ я всегда ставил WinActivateWait и по каким то причинам другое окно, которое должно быть активным, не активизируется и бот ждёт. Если я вручную сделаю нужное окно активным то бот продолжит работу. В чём может быть проблема? как Решить? Это бывает редко поэтому я даже не могу причину установить
 

hikki

Продвинутый
Сообщения
233
Репутация
99
может таймаут постаивить на WinWaitActive? и проверку на то что окно активно стало.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 590
Репутация
938
установи лимит ожидания, тоесть ждать "сколько то секунд" если окно не активировалось то переключиться на следующее окно.
 

AllWay

Знающий
Сообщения
16
Репутация
9
Столкнулся с похожей проблемой что и автор. Решил так:
Использовал нижеприведенную функцию. Для каждого персонажа в скрипте она стоит отдельно (поименно-зависимая).
Функция пытается активировать окно бесконечным циклом, до полной активации (была слабая машина, и не всегда удавалось активировать окно в течении 3-10 секунд) После 100% активации окна - цикл прекращает работу.

Код:
Func WAV_PERSNAME() ;PERSNAME - имя персонжа
$k=0
Do
WinActivate("EVE - PERSNAME") ;активировать окно PERSNAME
If WinActive("EVE - PERSNAME") Then ; Если окно активно, то
Sleep(2000) ;пауза 2 секунды, чтоб все успело подгрузиться
WinMove("EVE - PERSNAME","",0,0) ;перемещает окно левый верхний угол (если произошло незапланированное смещение окна)
   $k=1 ;закончить цикл
Else ;если окно не активно то
   WinActivate("EVE - PERSNAME") ;активировать окно PERSNAME
$k=0 ;продолжить цикл
EndIf
Until $k=1
EndFunc

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Не бесконечная ФУНКЦИЯ сделана на FOR-NEXT ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Func WAV_PERSNAME() ;PERSNAME - имя персонжа
For $k=0 To 5000 ; цикл
WinActivate("EVE - PERSNAME") ;активировать окно PERSNAME
If WinActive("EVE - PERSNAME") Then ; Если окно активно, то
Sleep(3000) ;пауза 3 секунды, чтоб все успело подгрузиться и появится
WinMove("EVE - PERSNAME","",0,0) ;перемещает окно левый верхний угол (если произошло незапланированное смещение окна)
ExitLoop ;Если окно активно - прервать цикл
Else ;если окно не активно то
   WinActivate("EVE - PERSNAME") ;активировать окно PERSNAME
EndIf
Next
; комп сигналит 15 раз - произошел сбой
for $k=1 To 15      
Beep(500, 190)
Sleep (20)
MsgBox(64,"","Активировать окно не удалось!!!", 2);
Next
MsgBox(64,"","Активировать окно не удалось!!!", -1);
EndFunc

WAV_PERSNAME() ;Выполнить функцию WAV_PERSNAME
 
Верх