用同一个键切换无限循环

Toggle infinite loop by the same key

我希望能够按下 key 和 运行 一个无限循环,并且能够按下同一个键来停止循环。在一个简单的例子中,我希望脚本无限期地点击:

XButton2::
if (Doing = 0)
{
  Doing := 1
  While Doing = 1
  {
     Click
  }
  return
} else {
 Doing := 0
}

不幸的是,这不起作用 - XButton2 不再响应,因为它是 运行 脚本。我可以通过其他键切换 Doing := 0,但我希望它是相同的 XButton2。有什么简单的方法可以做到这一点吗?我会避免复杂的解决方案。

使用 timed subroutine。这就是您通常 start/stop 在 ahk 中循环的方式。

例如:

clicking := false

label_click:
    click
return

XButton2::
    clicking := !clicking
    if(clicking)
        setTimer, label_click, 1 ; click once every millisecond (approx.)
    else
        setTimer, label_click, off
return

我通常是这样做的,尽管我希望看到更紧凑的版本。