微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AHK 不会停止发送密钥

如何解决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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。