发送循环时热键不起作用

hotkeys does not work when send is in loop

假设此代码:

Loop
{
    if enabled
        Send, /
}

m::
    enabled := !enabled
Return

例如,我想切换发送 / 到记事本。但是,如果我通过按键盘上的 M 运行 此代码,然后再次按 M 键不会禁用发送。
看起来循环中的 send 命令导致了这个问题,因为我尝试使用 msgbox,它不会禁用 m 键。
我怎样才能使这段代码工作? (SendInput 和 Play 也不起作用)

这是因为您的循环正在阻止任何其他执行。除非该循环是您脚本中唯一的东西,否则您通常希望避免使用循环并改用 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