AHK 不会停止发送密钥

问题描述

我有一个输入一系列键的 ahk 脚本。它一直工作到最后一个键。当涉及到最后一个键时,AHK 脚本似乎只是按住该键,直到我手动按下另一个键或退出脚本(我不想这样做)。

#SingleInstance force
Sleep,3000
Send {r}
Sleep,100
Send {u}
Sleep,100
Send {n}
Sleep,100
Exit

我的意思是,它是一个直接的脚本,但不是看到“运行”,而是“runnnnnnnnnnnnnnn(...到无穷大)”。应该注意的是,如果我延长 sleep 命令的时间,每个键都会被按住该时间。 100 秒确保我在继续下一个之前只得到一次字符(最后一个键除外)。

如何保证脚本每个键只按一次?

解决方法

我认为您使用该方法没有任何问题,但是您的键盘、延迟/延迟以及您将键发送到的特定程序会影响 Send 方法的可靠性。显然,您的键盘根本没有释放按键,因为您必须将睡眠时间调整为 100 毫秒以确保按一次。我使用这个自定义 KeyPress() 方法来帮助确保在挑剔的程序中按键。它在不同的刻度上发送按键的“按下”和“释放”部分。休眠 1 毫秒可确保在命令之间至少传递 1 个滴答声。

请注意,要使其正常工作,您必须将文字字符串传递给 Keypress() 方法。因此,您必须发送您想按的键用双引号括起来

#SingleInstance force

F10::
{
    KeyPress("r")
    KeyPress("u")
    KeyPress("n")
}


KeyPress(Key)
{
    Send,{%Key% down}
    Sleep 1
    Send,{%Key% up}
    Sleep 1
}

,

回应评论,指出 XY Problem 的 X 是 OP 想要一个在发送“运行”之前延迟 3 秒的脚本。

#SingleInstance force
Sleep,3000
SendInput run ;SendInput is more reliable than Send when trying to send plaintext to programs