AutoHotkey 中的循环错误
Loop Error in AutoHotkey
我正在尝试每 50 毫秒执行一次脚本推送 space,但它只会在我每次按下该键时执行。我希望它不断循环。这是代码:
Loop
{
^p::
Send, {Space}
Sleep, 50
return
}
假设你想通过 Ctrl+P 启动它,你只需要将 loop
里面热键执行体:
^p::
loop {
Send, {Space}
Sleep, 50
}
return
注意:用 return
结束热键是一种很好的编程风格,但请注意,这个 return 永远不会达到! (永无止境的循环)
要激活和停用 space 发送,您可能需要使用 setTimer,例如:
#persistent
active := false
^p::
if(active)
setTimer, sendSpace, off
else
setTimer, sendSpace, 50
active := !active
return
sendSpace:
send {space}
return
I don't know why but it's not working. When I press it again nothing happens and it continues pressing space.
既然它对我有用,我猜你的 cpu/ram 是罪魁祸首。我将在这里引用这个问题的答案: :
在我看来最有可能是 AutoHotkey 错误,或者错误地发送了 {space}
s 因为你的 RAM 不能很好地处理繁重的程序。
我能想到的你可以尝试的事情:
买台更好的电脑。
使用 setBatchLines, 1ms
(在脚本的最开始),使脚本每毫秒休眠 20ms,因此消耗更少 cpu。这可能会清除 AutoHotkey 的想法。
SetKeyDelay, 50
也可能有帮助。
有时,按下 ctrl
或 alt
等修饰符会大大减慢 windows 的速度。至少在 Windows Vista 下是这样。例如,您可能想摆脱 ^
(Ctrl) 并将此热键更改为普通的 p::
热键。
如果这仍然不适合您,您可以试试这个:
#persistent
active := false
^p::
setTimer, sendSpace, 50
hotKey, p, stopSendSpace, ON
return
sendSpace:
send {space}
return
stopSendSpace:
setTimer, sendSpace, OFF
hotkey, p, stopSendSpace, OFF
return
这将像上面的行为一样(再次通过 ctrl+p 激活),但是停用发生在 P(没有 Ctrl),没有覆盖默认行为
我正在尝试每 50 毫秒执行一次脚本推送 space,但它只会在我每次按下该键时执行。我希望它不断循环。这是代码:
Loop
{
^p::
Send, {Space}
Sleep, 50
return
}
假设你想通过 Ctrl+P 启动它,你只需要将 loop
里面热键执行体:
^p::
loop {
Send, {Space}
Sleep, 50
}
return
注意:用 return
结束热键是一种很好的编程风格,但请注意,这个 return 永远不会达到! (永无止境的循环)
要激活和停用 space 发送,您可能需要使用 setTimer,例如:
#persistent
active := false
^p::
if(active)
setTimer, sendSpace, off
else
setTimer, sendSpace, 50
active := !active
return
sendSpace:
send {space}
return
I don't know why but it's not working. When I press it again nothing happens and it continues pressing space.
既然它对我有用,我猜你的 cpu/ram 是罪魁祸首。我将在这里引用这个问题的答案:
在我看来最有可能是 AutoHotkey 错误,或者错误地发送了 {space}
s 因为你的 RAM 不能很好地处理繁重的程序。
我能想到的你可以尝试的事情:
买台更好的电脑。
使用
setBatchLines, 1ms
(在脚本的最开始),使脚本每毫秒休眠 20ms,因此消耗更少 cpu。这可能会清除 AutoHotkey 的想法。SetKeyDelay, 50
也可能有帮助。
有时,按下 ctrl
或 alt
等修饰符会大大减慢 windows 的速度。至少在 Windows Vista 下是这样。例如,您可能想摆脱 ^
(Ctrl) 并将此热键更改为普通的 p::
热键。
如果这仍然不适合您,您可以试试这个:
#persistent
active := false
^p::
setTimer, sendSpace, 50
hotKey, p, stopSendSpace, ON
return
sendSpace:
send {space}
return
stopSendSpace:
setTimer, sendSpace, OFF
hotkey, p, stopSendSpace, OFF
return
这将像上面的行为一样(再次通过 ctrl+p 激活),但是停用发生在 P(没有 Ctrl),没有覆盖默认行为