Что нового

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

modnik

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


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

hikki

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

Belfigor

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

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
 
Верх