Что нового

Простое условие

zelich

Новичок
Сообщения
149
Репутация
0
Стыдно такое спрашивать, но "вылетело" из головы:

Нужно по HotKey запускать функцию с циклом, например:
Код:
HotKeySet('{F9}', 'Simple')

$time = 0

While 1
    Sleep(10)
WEnd

Func Simple()
   While $time < 25 And
      Send("a");
      Sleep(75)
      $time = $time + 1
   WEnd
EndFunc


Как задать условие:
Если повторно нажато F9 - останавливать цикл, не останавливая скрит

Подскажите пожалуйста
 

filautdinov

Знающий
Сообщения
96
Репутация
9
Так?
Код:
Global $start = 0
Global $time = 0
HotKeySet('{F9}', 'Start')


While 1
    Sleep(10)
    Simple()
WEnd

Func Simple()
   If $start = 1 Then
      While $time < 25 ;And
         MsgBox(64, "", "")
;~          Send("a");
         Sleep(75)
         $time = $time + 1
         If $start = 0 Then ExitLoop
      WEnd
   EndIf
EndFunc

Func Start()
   If $start = 0 Then
      $start = 1
   Else
      $start = 0
   EndIf
EndFunc
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Неожиданно вот такой код не работает.
Код:
HotKeySet('{F9}', 'Simple')

$flag = 0
$time = 0

While 1
   Sleep(10)
WEnd

Func Simple()
   If $flag = 0 Then
      $flag = 1
      While $time < 25 And 1 ; Пришлось закончить оборванное выражение хоть как-то
         Send("a");
         Sleep(750)
         $time = $time + 1
      WEnd
   Else
      $flag = 0
      $time = 0 ; Вероятно, топикстартер забыл указать, что ещё здесь также требуется обнулить и переменную $time (кстати, тогда лучше использовать цикл For $i = 1 To 25)
   EndIf
EndFunc
Другие функции (перекрёстно), вызванные горячими клавишами, мне ранее, кажется, удавалось прерывать подобным образом. А когда требуется прервать саму себя, приходится дожидаться выполнения до конца.
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Вот такой изврат тоже работает не так, как хотелось бы.
Код:
HotKeySet('{F9}', 'Simple1')

While 1
   Sleep(10)
WEnd

Func Simple1()
   HotKeySet('{F9}', 'Simple2')
   For $i = 1 To 25
      Send("a");
      Sleep(75)
   Next
EndFunc

Func Simple2()
   HotKeySet('{F9}', 'Simple1')
EndFunc
Похоже на то, что функция, вызванная горячей клавишей, не хочет прерываться той же горячей клавишей.
Сообщение автоматически объединено:

А вот такой изврат всё-таки заработал.
Код:
HotKeySet('{F9}', 'Simple1')

$flag = 0

While 1
   Sleep(10)
WEnd

Func Simple1()
   HotKeySet('{F9}', 'Simple2')
   $i = 0
   While $i < 25 And $flag = 0
      $i += 1
      Send("a");
      Sleep(75)
   WEnd
   HotKeySet('{F9}', 'Simple1')
   $flag = 0
EndFunc

Func Simple2()
   HotKeySet('{F9}', 'Simple1')
   $flag = 1
EndFunc
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Так вот же рабочий скрипт. Бери и пользуйся.
 
Верх