Использование al oop внутри определения горячей клавиши - плохая практика.
AHK не обеспечивает истинную многопоточность, поэтому длительные циклы, как правило, действительно плохая идея.
Использование таймера исправляет это, и использование таймера в любом случае всегда то, что вы хотите для чего-то подобного.
И это будет намного проще.
Итак, с Ctrl+j
мы активируем желаемое окно и создаем таймер и говорим ему запускать нашу функцию TimerCallback
(которую мы вскоре создадим) каждые 2 сек:
^j::
WinActivate, MyWindow
WinWaitActive, MyWindow ;shouldn't be needed, but if you find it helpful, fair enough
TimerCallback() ;run the function once, since the timer is going to
;run it for the first time only after 2secs
SetTimer, TimerCallback, 2000
return
И затем мы делаем shift горячей клавишей для отключения таймер И мы наверняка хотим использовать модификатор ~
, чтобы не использовать клавишу при нажатии горячей клавиши:
~Shift::SetTimer, koira, Off
А теперь давайте также определим нашу функцию TimerCallback
:
TimerCallback()
{
Click, 44, 55
Sleep, 1000
Click, 144, 155
}
Итак, вот снова сценарий полностью, если что-то осталось неясным:
^j::
WinActivate, MyWindow
WinWaitActive, MyWindow ;shouldn't be needed, but if you find it helpful, fair enough
TimerCallback() ;run the function once, since the timer is going to
;run it for the first time only after 2secs
SetTimer, TimerCallback, 2000
return
~Shift::SetTimer, TimerCallback, Off
TimerCallback()
{
Click, 44, 55
Sleep, 1000
Click, 144, 155
}