即按 ctrl+s 应该激活 ctrl+s...下面的不起作用。更简单的 SendInput ^s 也没有。目标是让 ctrl+s 保存当前文档,然后通过更多代码加载另一个文档,但保存部分永远不会起作用。糟糕的代码,取决于我把 sleep 或 no sleep 放在哪里,要么返回 s 要么 shift s (无论如何在 1 个代码编辑器中)或者什么也不。我基本上想要一个模仿自身的热键。
F4::ExitApp
<^s::
send, {lctrl down}
SLEEP 300
SEND s
SLEEP 300
SEND {lctrl up}
return
Run Code Online (Sandbox Code Playgroud)
我认为您的程序遇到的问题是让 ^s 在其内部发送另一个 ^s 会创建一个无限递归循环,其中没有任何东西能够运行到您调用 ^s 的地方。为了防止这种情况,我们可以使用$修饰符,如下所示:
$<^s::
SendInput ^s
return
Run Code Online (Sandbox Code Playgroud)
从文档的修饰符部分的相关部分:
通常仅当脚本使用 Send 命令发送包含热键本身的键时才需要这样做,否则可能会导致脚本自行触发。$ 前缀强制使用键盘挂钩来实现此热键,其副作用是阻止发送命令触发它。$ 前缀相当于在此热键定义上方的某处指定了#UseHook。
编辑:即使我删除修改器,它似乎对我来说工作得很好$。测试以下代码表明,在语句之前、之后或期间的代码执行似乎没有问题SendInput。
<^s::
MsgBox no
SendInput, ^s
MsgBox yes
return
Run Code Online (Sandbox Code Playgroud)
也许检查一下您的 AHK 版本或安装情况?