Что нового

Одновременный запуск нескольких циклов со своим рестартом

Камаз

Новичок
Сообщения
2
Репутация
0
Здравствуйте уважаемые пользователи. Не давно написал не большой бот и но он очень сырой. ни нашел нужную мне информацию в интернете и на данном форуме (если есть то ткните пожалуйста пальцем - значит слепой уже, заранее прошу прощения). Меня интересует вот какой вопрос: возможно ли сделать несколько циклов которые бы запустились с включением бота но рестарт был по определенному времени. и нужно чтобы эти циклы были не взаимосвязаны. Единственное что их связывает это одновременный запуск.
Пример: (напишу "по русски" чтобы более менее было понятно не используя коды)
1. Запуск бота
2. Запуск цикла 1, цикла 2
3. Цикл 1 - нажатие кнопки 1 - задержка - нажатие кнопки 2 - рестарт цикла через 10 минут
4. Цикл 2 - нажатие кнопки 3 - задержка....нажатие кнопки 6 - рестарт цикла через 3 минуты

Возможно ли это сделать? Надеюсь на вашу помощь.
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Камаз
Если я правильно понял задачу, то можно обойтись одним скриптом и одним циклом While WEnd с помощью функций TimerInit() и TimerDiff()...
 
Автор
К

Камаз

Новичок
Сообщения
2
Репутация
0
While 100000000000
Sleep(1000)
ControlSend($hWnd, "", "", "{F10}")
Sleep(1000)
ControlSend($hWnd, "", "", "{F10}")
$j = 0


While $j <= 6
Sleep(2000)
ControlSend($hWnd, "", "", "{F7}")
Sleep(2000)
ControlSend($hWnd, "", "", "{F8}")
Sleep(2000)
ControlSend($hWnd, "", "", "{F9}")
$i = 0

Вот как я написал пока цикл - но тут они не много взаимосвязаны (если я правильно понимаю). А хотелось бы чтобы была возможность самому выставлять время рестарта отдельного цикла, а него всех 3. Так как у них идет взаимосвязь.
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Камаз
Вот такой вариант:

Код:
; НАЧАЛО

 MONITOR("Запуск бота")

 $F1=True
 $F2=True

 While True

  If $F1 Then
   Z1()
   $F1=False
   $T1=TimerInit()
  EndIf

  If $F2 Then
   Z2()
   $F2=False
   $T2=TimerInit()
  EndIf

  If TimerDiff($T1)>10*60*1000 Then $F1=True
  If TimerDiff($T2)>3*60*1000 Then $F2=True

 WEnd

 Func Z1()

  MONITOR("Запуск первой функции",1000)
  ;Sleep(1000)
  ;ControlSend($hWnd, "", "", "{F10}")
  ;Sleep(1000)
  ;ControlSend($hWnd, "", "", "{F10}")
  MONITOR("Пауза")

 EndFunc

 Func Z2()

  MONITOR("Запуск второй функции",1000)
  ;Sleep(2000)
  ;ControlSend($hWnd, "", "", "{F7}")
  ;Sleep(2000)
  ;ControlSend($hWnd, "", "", "{F8}")
  ;Sleep(2000)
  ;ControlSend($hWnd, "", "", "{F9}")
  MONITOR("Пауза")

 EndFunc

; Монитор отладки

 Func MONITOR($TEXT1,$TIME=0)
  SplashTextOn("Отладка",$TEXT1,400,40,-1,int(@DesktopHeight*3/4),0,"courier",8)
  If $TIME>0 Then Sleep($TIME)
 EndFunc

; КОНЕЦ
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Камаз
Адаптированный вариант с комментариями...

Код:
; НАЧАЛО

 $hWnd = WinGetHandle("окно программы на которое действует бот")

 $F1=True ; Разрешение на запуск функции Z1()
 $F2=True ; Разрешение на запуск функции Z2()
 $F3=True ; Разрешение на запуск функции Z3()

 While True

  If $F1 Then
   Z1() ; Запуск функции Z1()
   $F1=False ; Запрет запуска функции Z1()
   $T1=TimerInit() ; Включение таймера T1
  EndIf

  If $F2 Then
   Z2() ; Запуск функции Z2()
   $F2=False ; Запрет запуска функции Z2()
   $T2=TimerInit()  ; Включение таймера T2
  EndIf

  If $F3 Then
   Z3() ; Запуск функции Z3()
   $F3=False ; Запрет запуска функции Z3()
   $T3=TimerInit() ; Включение таймера T3
  EndIf

  ; Проверка истечения таймером T1 10 минут
  If TimerDiff($T1)>10*60*1000 Then $F1=True ; Разрешение на запуск функции Z1()

  ; Проверка истечения таймером T2 3 минут
  If TimerDiff($T2)> 3*60*1000 Then $F2=True ; Разрешение на запуск функции Z2()

  ; Проверка истечения таймером T3 5 минут
  If TimerDiff($T3)> 5*60*1000 Then $F3=True ; Разрешение на запуск функции Z3()

 WEnd

; Функция Z1()

 Func Z1()
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F10}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F10}")
 EndFunc

; Функция Z2()

 Func Z2()
  Sleep(2000)
  ControlSend($hWnd, "", "", "{F7}")
  Sleep(2000)
  ControlSend($hWnd, "", "", "{F8}")
  Sleep(2000)
  ControlSend($hWnd, "", "", "{F9}")
 EndFunc

; Функция Z3()

 Func Z3()
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F11}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F11}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F11}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{Tab}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F1}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F2}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F3}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F4}")
  Sleep(1000)
  ControlSend($hWnd, "", "", "{F11}")
 EndFunc

; КОНЕЦ
 
Верх