<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1632085368384154" crossorigin="anonymous"></script><script src="https://autohotkey.top/gtag.js"></script></head> <body> <h1>SendMode</h1> <p>使 <a href="Send.htm">Send</a> 等同于 SendEvent 或 SendPlay, 而不是默认的(SendInput). 也使 Click 和 MouseMove/Click/Drag 使用指定的方法.</p> <pre class="Syntax"><span class="func">SendMode</span> Mode</pre> <h2 id="Parameters">参数</h2> <dl> <dt>Mode</dt> <dd> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>指定以下单词之一:</p> <p><strong>Event:</strong> 将 <a href="Send.htm">Send</a> 切换到 <a href="Send.htm#SendEvent">SendEvent</a> 方法, 适用于 <a href="Send.htm">SendText</a>, <a href="Click.htm">Click</a>, <a href="MouseMove.htm">MouseMove</a>, <a href="MouseClick.htm">MouseClick</a> 和 <a href="MouseClickDrag.htm">MouseClickDrag</a>.</p> <p><strong>Input:</strong> 这是所有脚本使用的初始默认值. 它使用 <a href="Send.htm#SendInput">SendInput</a> 方法, 适用于 <a href="Send.htm">Send</a>, <a href="Send.htm">SendText</a>, <a href="Click.htm">Click</a>, <a href="MouseMove.htm">MouseMove</a>, <a href="MouseClick.htm">MouseClick</a> 和 <a href="MouseClickDrag.htm">MouseClickDrag</a>. 已知限制:</p> <ul> <li>Windows 资源管理器忽略 SendInput 的特定导航热键的模拟, 例如 <kbd>Alt</kbd>+<kbd>&larr;</kbd>. 要解决这个问题, 可以使用 <code>SendEvent "!{Left}"</code> 或 <code>SendInput "{Backspace}"</code>.</li> </ul> <p><strong>InputThenPlay:</strong> 与上面相同, 不同之处在于当 SendInput <a href="Send.htm#SendInputUnavail">不可用时</a>, 它并没有退回到 Event 模式, 而是恢复为 Play 模式(如下). 当 SendInput 不可用时, 这也会导致 <a href="Send.htm#SendInput">SendInput 函数</a>本身返回到 Play 模式.</p> <p id="Play"><strong>Play:</strong> 切换到 <a href="Send.htm#SendPlay">SendPlay</a> 方法, 适用于 <a href="Send.htm">Send</a>, <a href="Send.htm">SendText</a>, <a href="Click.htm">Click</a>, <a href="MouseMove.htm">MouseMove</a>, <a href="MouseClick.htm">MouseClick</a> 和 <a href="MouseClickDrag.htm">MouseClickDrag</a>. 已知限制:</p> <ul> <li>不能发送在当前键盘布局上不存在的字符(例如英语中的 &Ocirc;). 为了解决这个问题, 请使用 <a href="Send.htm#SendEvent">SendEvent</a>.</li> <li>在 RichEdit 控件(可能还有其他的, 例如 WordPad 和 Metapad), 模拟鼠标拖动可能没有效果. 要为特殊的拖动使用替换模式, 请参照此例: <code><a href="Send.htm#SendEvent">SendEvent</a> "{Click 6 52 Down}{Click 45 52 Up}"</code>.</li> <li>模拟鼠标滚轮的滚动只进行一个方向上的移动(通常是向下, 但在一些程序中可能是向上). 此外, 滚轮的滚动在类似 MS Word 和 Notepad 的程序中可能没有效果. 要为特殊的滚动使用替换模式, 请参照此例: <code><a href="Send.htm#SendEvent">SendEvent</a> "{WheelDown 5}"</code>.</li> <li>当在<a href="../Scripts.htm#auto">脚本启动</a>中使用 <code>SendMode "Play"</code> 时, 会影响所有的重映射按键并可能失去它们的某些功能. 有关详情, 请参阅 <a href="../misc/Remap.htm#SendPlay">SendPlay 重映射限制</a>.</li> <li>SendPlay 不会触发 AutoHotkey 的热键或热字符串, 也不会触发其他程序或操作系统注册的全局热键.</li> </ul> </dd> </dl> <h2 id="Return_Value">返回值</h2> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>函数返回以前的设置.</p> <h2 id="Remarks">备注</h2> <p>由于 SendMode 也改变了 <a href="Click.htm">Click</a>, <a href="MouseMove.htm">MouseMove</a>, <a href="MouseClick.htm">MouseClick</a> 和 <a href="MouseClickDrag.htm">MouseClickDrag</a> 的模式, 所以您有机会为特殊的鼠标事件使用不同的模式. 实现这种操作最便捷的方法是使用 <a href="Send.htm#Click">{Click}</a>. 例如:</p> <pre>SendEvent "{Click 100 200}" <em>; SendEvent 使用更老更传统的点击方法.</em></pre> <p>如果在<a href="../Scripts.htm#auto">脚本启动</a>中使用了 SendMode, 那么它还会影响<a href="../misc/Remap.htm">键盘和鼠标重映射</a>. 特别是, 如果你将 <code>SendMode "Play"</code> 与重新映射一起使用, 请参阅 <a href="../misc/Remap.htm#SendPlay">SendPlay 的重映射限制</a>.</p> <p>内置变量 <strong>A_SendMode</strong> 包含当前的设置.</p> <p>每个新运行的<a href="../misc/Threads.htm">线程</a>(如 <a href="../Hotkeys.htm">热键</a>, <a href="Menu.htm">自定义菜单项</a>或<a href="SetTimer.htm">定时</a>子程序) 都会以此函数的默认设置开始. 这个默认设置可以通过在<a href="../Scripts.htm#auto">脚本启动</a>中使用此函数来改变.</p> <h2 id="Related">相关</h2> <p><a href="Send.htm">Send</a>, <a href="SetKeyDelay.htm">SetKeyDelay</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClick.htm">MouseClick</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseMove.htm">MouseMove</a></p> <h2 id="Examples">示例</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> 让 Send 成为 SendInput 的代名词. 由于其卓越的速度和可靠性, 推荐在新脚本中使用.</p> <pre>SendMode "Input"</pre> </div> <div class="ex" id="ExInputThenPlay"> <p><a class="ex_number" href="#ExInputThenPlay"></a> 让 Send 成为 SendInput 的代名词, 但如果 SendInput 不可用, 则回到 SendPlay.</p> <pre>SendMode "InputThenPlay"</pre> </div> <a href="https://dftg.net">dftg</a><!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5a9c4fcb9b6482fa53ce820d892f969"}'></script><!-- Cloudflare Pages Analytics --><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"rayId":"95c52a020f29ab4e","version":"2025.6.2","r":1,"serverTiming":{"name":{"cfExtPri":true,"cfEdge":true,"cfOrigin":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"51750bb5dc4f40cc91a5ec55c63bbc01","b":1}' crossorigin="anonymous"></script> </body> </html>