SendLevel [v1.1.06+]
控制热键和热字串是否忽略模拟的键盘和鼠标事件.
SendLevel, Level
参数
- Level
介于 0 和 100 之间的整数, 可以为 表达式.
一般说明
默认情况下, 钩子 热键 和 热字串 会忽略由任何 AutoHotkey 脚本生成的键盘和鼠标事件. 在某些情况下它可用于覆盖默认行为; 例如, 可使用重映射键来触发其他热键. SendLevel 和 #InputLevel 提供了实现此目的的方法.
SendLevel 设置由当前 脚本线程 生成的事件级别, 而 #InputLevel 设置它下面所有热键或热字串的级别. 要让脚本生成的事件触发钩子热键或热字串, 则此事件的发送级别必须高于热键或热字串的输入级别.
兼容性:
- SendPlay 不受 SendLevel 影响.
- SendInput 会受 SendLevel 的影响,但在 SendInput 执行时其所在脚本中的钩子热键无法激活,因为这个命令会让钩子暂时失效.
- 使用 "reg" 方法实现的热键不能区分物理和模拟输入, 所以不会受 SendLevel 的影响. 然而, 级别高于 0 的热键总是使用了键盘或鼠标钩子.
- 自动替换型 热字串 生成事件的级别总是为 0, 因为通常在替换文本时不希望触发其他热字串或热键. 要变通解决此问题, 请使用非自动替换型热字串和 Send 命令.
- 任何没有与当前键盘布局中的按键相对应的字符都无法触发热字串,即使使用 SendLevel 也不行.这是热字串识别程序的限制.
[v1.1.23+]: 内置变量 A_SendLevel 包含当前设置.
每个新运行的热键或热字串 线程 初始的发送级别等于此热键或热字串的 输入级别. 每个新运行的其他线程 (例如 自定义菜单项 或 定时 子程序) 都会以默认设置开始, 一般为 0, 不过可以在 自动执行段 中使用此命令进行改变.
如果在 自动执行段 中使用 SendLevel, 它还会影响 键盘和鼠标重映射.
早于 v1.1.06 的 AutoHotkey 版本会表现的就像 #InputLevel 0
和 SendLevel 0
那样.
相关
#InputLevel, Send, Click, MouseClick, MouseClickDrag
示例
SendLevel 1 Send btw{Space} ; 生成 "by the way ". ; 这可以在其他脚本中定义: ::btw::by the way