SendMode

AutoHotKey

SendMode [v1.0.43+]

Send 和 SendInput 或 SendPlay 具有相同的功能而不是默认的(SendEvent).也使 Click 和 MouseMove/Click/Drag 使用指定的方法.

SendMode Input|Play|Event|InputThenPlay

首个参数为下列单词的其中一个:

Event: 这是所有脚本开始时默认使用的. 它让 Send, SendRaw, ClickMouseMove/Click/Drag 使用 SendEvent 模式.

Input: 让 Send, SendRaw, ClickMouseMove/Click/Drag 切换到 SendInput 方法. 已知限制:

  • Windows 资源管理器会忽略 SendInput 模拟的某些导航的热键, 例如 Alt+LeftArrow. 要变通解决此问题,请使用 SendEvent !{Left}SendInput {Backspace}.

InputThenPlay [v1.0.43.02+]: 与上面相同, 不过当 SendInput 不可用 时恢复为下面的 Play 模式而不是退回到 Event 模式. 这也会使得 SendInput 命令 自身在 SendInput 不可用时恢复到 Play 模式.

Play: 让 Send, SendRaw, ClickMouseMove/Click/Drag 切换到 SendPlay 方法.
已知限制:

  • 不能发送在当前键盘布局上不存在的字符 (例如英语中的 ?). 要变通解决此问题, 请使用 SendEvent.
  • 在 RichEdit 控件 (可能还有其他的) 例如 WordPad 和 Metapad, 模拟鼠标拖动可能没有效果. 要为特殊的拖动使用替换模式,请参照此例:SendEvent {Click 6, 52, down}{Click 45, 52, up}.
  • 模拟鼠标滚轮的滚动只进行一个方向上的移动 (通常是向下, 但在一些程序中可能是向上). 此外, 滚轮的滚动在类似 MS Word 和 Notepad 的程序中可能没有效果. 要为特殊的滚动使用替换模式,请参照此例:SendEvent {WheelDown 5}.
  • 当在自动执行段(脚本的顶部)使用 SendMode Play 时,会影响所有的重映射按键并可能失去它们的某些功能.请参阅 SendPlay 的重映射限制 了解详情.
  • SendPlay 不会触发 AutoHotkey 的热键或热字串及由操作系统或其他程序注册的全局热键.

备注

由于 SendMode 也改变了 ClickMouseMove/Click/Drag 的模式, 所以您有机会为特殊的鼠标事件使用不同的模式. 实现这种操作最便捷的方法是使用 {Click}. 例如:

SendEvent {Click 100, 200}  ; SendEvent 使用更老更传统的方法进行点击.

如果在自动执行段 (脚本的顶部) 使用了 SendMode, 那么它还会影响 键盘和鼠标重映射. 尤其是您在重映射时使用了 SendMode Play,请参阅 SendPlay 的重映射限制.

[v1.1.23+]: 内置变量 A_SendMode 包含当前的设置.

每个新运行的 线程 (例如 热键, 自定义菜单项定时 子程序) 都会以此命令的默认设置开始. 通过在脚本的自动执行段 (脚本的顶部) 使用此命令可以改变这个默认设置.

相关

Send, SetKeyDelay, SetMouseDelay, Click, MouseClick, MouseClickDrag, MouseMove

示例

SendMode Input
SendMode InputThenPlay