假设此代码:
Loop { if enabled Send, / } m:: enabled := !enabled Return
例如,我想将/
发送到记事本。但如果我在键盘上按 M 运行此代码,则再次按M键不会禁用发送。
看起来循环中的send
命令会导致此问题,因为我尝试使用msgbox
而不禁用m键。
如何使此代码生效? (SendInput和Play也不起作用)
答案 0 :(得分:2)
这是因为你的循环阻止了任何其他的执行。除非该循环是您脚本中的唯一内容,否则您通常希望避免使用循环并改为使用timers。
Timers不会阻止进一步执行,但更像是他们自己的线程。以下是使用计时器的示例:
slashTimerActive := 0
m::
if (!slashTimerActive)
SetTimer, SendSlash, 100 ; Call the sub every 100ms
else
SetTimer, SendSlash, Off
slashTimerActive := !slashTimerActive ; Flip the variable
return
; Subroutine
SendSlash:
SendInput, /
return