发送循环时热键不起作用
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
假设此代码:
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