连发、重复按键和循环任务最容易写成一个停不下来的死循环。代码看起来很短,但只要循环一直占着当前线程,脚本就可能难以响应其它热键,也不方便随时停止。

这篇示例演示一种简单结构:按下 ER 后,用 SetTimer 启动循环;按下 F1 修改停止标记,让循环在下一次检查时退出。它适合帮助新手理解“启动任务”和“通知任务停止”要分开。

代码里的关键点

  • A_ThisHotkey 用来记录当前按下的是哪个热键。
  • SetTimer 使用一次性触发,把循环放到另一个执行时机里。
  • OutLoop 是停止标记;循环每次运行都会检查它。
  • Sleep 决定重复间隔,也给脚本留出响应其它热键的机会。

使用时注意

  • 示例热键只是演示,正式使用时要按自己的需求修改。
  • 间隔不要盲目压到极低。目标程序、电脑负载和脚本响应都会受影响。
  • 如果任务越来越复杂,建议改成短周期 SetTimer 回调,不要把所有逻辑长期塞在一个 Loop 里。

代码示例

; 演示如何修改按键成单键连发的示例
$e::
$r::
SetTimer, 跳转到循环, -1
OutLoop := 0
Outkey := A_ThisHotkey
Return

跳转到循环:
Loop {
  SendInput, % "{" RegExReplace(Outkey,"\$") "}"
  Sleep 150
  If (OutLoop = 1)
    Break
}
Return

F1::OutLoop := 1  ; 停止按键循环

 

站内延伸

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。