在热键定义中使用循环是不好的做法。
AHK 不提供真正的多线程,因此长时间运行的循环通常是一个非常糟糕的主意。
使用timer 修复这个问题,无论如何,计时器的使用总是你想要的。
而且它也会简单得多。
因此,我们使用Ctrl+j 激活所需的窗口并创建计时器并告诉它每 2 秒运行我们的函数 TimerCallback(我们将很快创建):
^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 设置为关闭计时器的热键。我们肯定希望在触发热键时使用~ modifier 不消耗密钥:
~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
}