如何在AutoHotkey中的SendInput命令之间添加延迟?
我有一个自动热键脚本,使用它发送命令太快,我的程序无法处理。我的脚本将发送鼠标单击以聚焦输入字段,然后在字段完成聚焦之前开始键入 我尝试使用使我的脚本运行得稍微慢一点,但这不适用于如何在AutoHotkey中的SendInput命令之间添加延迟?,autohotkey,sendinput,Autohotkey,Sendinput,我有一个自动热键脚本,使用它发送命令太快,我的程序无法处理。我的脚本将发送鼠标单击以聚焦输入字段,然后在字段完成聚焦之前开始键入 我尝试使用使我的脚本运行得稍微慢一点,但这不适用于SendInput 注意:SendInput不遵守SetKeyDelay;在该模式下,击键之间没有延迟。当SendMode输入生效时,发送也是如此。 我目前的解决方法是在每次输入后使用sleep命令,但这并不理想 SendMode Input F1:: MouseClick, left, 61, 50
SendInput
注意:SendInput不遵守SetKeyDelay;在该模式下,击键之间没有延迟。当SendMode输入生效时,发送也是如此。我目前的解决方法是在每次输入后使用sleep命令,但这并不理想
SendMode Input
F1::
MouseClick, left, 61, 50 ; select title field
sleep 100 ; artificial delay to prevent misfocused inputs
SendInput %user_input%{Enter} ; enter job title
sleep 100 ; artificial delay
MouseClick, left, 67, 408 ; select job
sleep 100 ; artificial delay
Return
理想情况下,我想要一个更优雅的解决方案,在每个SendInput命令之间添加延迟,而无需每次手动使用sleep命令
如何在不重复使用睡眠的情况下在自动热键中的SendInput命令之间添加延迟?尝试使用而不是
这会在每次单击后发送文本和鼠标单击,延迟100毫秒
user_input := "hello world"
SetMouseDelay 100, Play
SendPlay {Click 61,50}%user_input%{enter}{click 67,408}
从 注意:如果启用UAC,即使脚本以管理员身份运行,SendPlay也可能完全无效。有关更多信息,请参阅 与此类似,SendPlay的击键不会与用户键入的击键混杂在一起。因此,如果用户在SendPlay期间碰巧键入了一些内容,那么这些按键将推迟到以后 尽管SendPlay比SendInput慢很多,但它通常比传统模式快(即使在is-1时) SendPlay不使用SetKeyDelay和SetMouseDelay的标准设置。相反,它默认为完全没有延迟,可以更改,如以下示例所示:
SetKeyDelay, 0, 10, Play ; Note that both 0 and -1 are the same in SendPlay mode.
SetMouseDelay, 10, Play
我的理解是,SendInput不尝试协调键盘和鼠标事件或延迟,因此它可以利用没有这种支持的快速操作系统调用。