【发布时间】:2015-06-01 06:28:07
【问题描述】:
我正在尝试每 50 毫秒创建一个脚本推送空间,但它只会在我每次按键时执行。我希望它不断循环。代码如下:
Loop
{
^p::
Send, {Space}
Sleep, 50
return
}
【问题讨论】:
标签: autohotkey
我正在尝试每 50 毫秒创建一个脚本推送空间,但它只会在我每次按键时执行。我希望它不断循环。代码如下:
Loop
{
^p::
Send, {Space}
Sleep, 50
return
}
【问题讨论】:
标签: autohotkey
假设您想通过 Ctrl+P 启动它,您只需将 loop inside 放在热键执行体中:
^p::
loop {
Send, {Space}
Sleep, 50
}
return
注意:用return 结束你的热键是一种很好的编程风格,但请注意,这个返回永远不会达到! (永无止境的循环)
要激活和停用空间发送,您可能需要使用setTimer,例如:
#persistent
active := false
^p::
if(active)
setTimer, sendSpace, off
else
setTimer, sendSpace, 50
active := !active
return
sendSpace:
send {space}
return
我不知道为什么,但它不起作用。当我再次按下它时,没有任何反应,它继续按下空格。
既然它对我有用,我猜你的 cpu/ram 是罪魁祸首。我将在这里引用我对这个问题的回答:SendInput won't work at high speed:
在我看来很可能是 AutoHotkey 错误,或者错误地发送了 {space}s,因为您的 RAM 无法很好地处理繁重的程序。
我能想到的可以尝试的方法:
买一台更好的电脑。
使用setBatchLines, 1ms(在脚本的最开头),使脚本每毫秒休眠 20 毫秒,因此消耗的 CPU 更少。这可能会清除 AutoHotkey 的想法。
SetKeyDelay, 50 也可能有帮助。
有时,按下修饰符(例如 ctrl 或 alt)会大大降低窗口速度。至少在 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)时,不会覆盖默认行为
【讨论】: