连发、重复按键和循环任务最容易写成一个停不下来的死循环。代码看起来很短,但只要循环一直占着当前线程,脚本就可能难以响应其它热键,也不方便随时停止。
这篇示例演示一种简单结构:按下 E 或 R 后,用 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 ; 停止按键循环
站内延伸
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
