发送处于循环状态时,热键不起作用

时间:2015-05-07 13:03:22

标签: autohotkey

假设此代码:

Loop
{
    if enabled
        Send, /
}

m::
    enabled := !enabled
Return

例如,我想将/发送到记事本。但如果我在键盘上按 M 运行此代码,则再次按M键不会禁用发送。
看起来循环中的send命令会导致此问题,因为我尝试使用msgbox而不禁用m键。
如何使此代码生效? (SendInput和Play也不起作用)

1 个答案:

答案 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