autohotkey2.0 Send keys参数分析

Send Keys

Keys 是 Send 的参数,官方给出的解释:

Keys,类型: 字符串。要发送的按键序列. 然后对特殊字符(字符 ^+!#{})如何运行给了一个说明:

默认情况下(即既未使用 SendText,也未使用原始模式(Raw mode)或文本模式(Text mode)时),字符 ^+!#{} 具有特殊含义。字符 ^+!# 分别代表修饰键 Ctrl、Shift、Alt 和 Win。它们仅对紧随其后的下一个按键起作用。要单独发送对应的修饰键,请将该键的名称用大括号括起来。如果仅需按下(按住不放)或释放该键,请在键名后加上单词 "down" 或 "up",如下所示。

修饰符号 对应按键名称 按下操作 松开操作 示例代码 说明
^ {Ctrl} {Ctrl down} {Ctrl up} Send "^{Home}" 按下 Ctrl+Home
+ {Shift} {Shift down} {Shift up} Send "+abC" 发送文本 "AbC"
! {Alt} {Alt down} {Alt up} Send "!a"
Send "!+a"
按下 Alt+A
按下 Alt+Shift+A

这段话有点不好理解的。太绕了。没有说明作者是如何思考的,面临什么问题,这样做是如何解决的。

keys 本身就是一个字符串,但其中 “^+!#{}” 直接被转义了,因为这样最方便,在 autohotkey 场景中,需要这样的情况最多。所以,突出重点,高频使用自然要用最便利的方式。

其他都好理解,关键要理解大括号{}的转义,手册在这里没有直接说,我是跳着看的,一时没看懂,看了下面的例子就明白了。

被大括号括起来的不再是字符本身,而是键盘上常用的特殊按键的名字,如:{Esc}、{Tab}、{CapsLock}等等,同样对 Ctrl 有效,就如例子所示,发送 Ctrl 按下:Send "{Ctrl down}"

如果发送复制快捷键:Ctrl+v,表示方式:Send "^v"

总结:字符 ^+!#{} 在字符串内直接是特殊含义,但在{}内回归按键名称的本义。

posted @ 2026-08-25 17:27  立体风  阅读(16)  评论(0)    收藏  举报