<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>SetKeyDelay</h1> <p>设置每次 <a href="Send.htm">Send</a> 或 <a href="ControlSend.htm">ControlSend</a> 发送键击后自动的延时.</p> <pre class="Syntax"><span class="func">SetKeyDelay</span> <span class="optional">Delay, PressDuration, "Play"</span></pre> <h2 id="Parameters">参数</h2> <dl> <dt>Delay</dt> <dd> <p>类型: <a href="../Concepts.htm#numbers">整数</a></p> <p>如果未设置或省略, 则保留当前的延时. 否则, 请指定毫秒表示的时间. 指定 -1 表示无延时, 或 0 表示最小延时(然而如果使用了 <em>Play</em> 参数, 则 0 和 -1 都表示无延时).</p> </dd> <dt id="dur">PressDuration</dt> <dd> <p>类型: <a href="../Concepts.htm#numbers">整数</a></p> <p>某些游戏和特殊的应用程序可能要求每次键击具有一定的按下时间; 即按下按键后, 持续一段时间, 然后才松开.</p> <p>如果未设置或省略, 则保留当前的按下持续时间. 否则, 请指定毫秒表示的时间. 指定 -1 表示无延时(默认), 或 0 表示最小延时(然而, 如果使用了 <em>Play</em> 参数, 则 0 和 -1 都表示无延时).</p> <p class="note"><strong>注意:</strong> <em>PressDuration</em> 也会在修饰键(Ctrl, Alt, Shift 和 Win)) 状态发生任何变化后产生一个延迟, 以支持正在发送的键.</p> </dd> <dt>Play</dt> <dd> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>如果未设置或省略, 则将延时和按下持续时间应用于传统的 SendEvent 模式. 否则, 请指定单词 <strong>Play</strong> 会把上面的设置应用于 <a href="Send.htm#SendPlayDetail">SendPlay 模式</a>. 如果脚本没有使用过此参数, 则 SendPlay 总是 -1.</p> </dd> </dl> <h2 id="Remarks">备注</h2> <p>如果没有使用 SetKeyDelay, 则对于传统的 SendEvent 模式默认延时为 10 而对于 <a href="Send.htm#SendPlayDetail">SendPlay 模式</a>为 -1. 对于这两种模式默认的 <em>按住时长</em> 为 -1</p> <p><a href="Send.htm#SendInputDetail">SendInput</a> 不会影响 SetKeyDelay; 在这种模式下, 键击之间没有延时. 当 <a href="SendMode.htm">SendMode Input</a> 生效时, 对于 <a href="Send.htm">Send</a> 同样如此.</p> <p>在每次 <a href="Send.htm">Send</a> 或 <a href="ControlSend.htm">ControlSend</a> 发送键击后会自动进行短暂的延时. 这样做提高了脚本的可靠性, 因为窗口有时无法响应快速的键击流.</p> <p>在延迟(睡眠) 期间, 使当前线程<a href="../misc/Threads.htm#Interrupt">不可中断</a>.</p> <p>由于操作系统计时系统的精确度, 延时可能会被向上取整到最近的 10 或 15 的倍数.</p> <p>对于 Send/SendEvent 模式, 延时为 0 时实际内部会执行 Sleep(0), 这样会将脚本时间片的剩余部分分配给其他需要的进程. 如果没有进程需要, 那么 Sleep(0) 相当于完全没有延时. 与之相比, 延时为 -1 则从不休眠. 为了提高可靠性, 推荐使用 0 而不是 -1.</p> <p>当延时设为 -1 时, 脚本的进程优先级会成为传统的 <a href="SendMode.htm">SendEvent 模式</a>中键击发送速度的重要因素. 要提升脚本的优先级, 请使用 <code><a href="ProcessSetPriority.htm">ProcessSetPriority</a> "High"</code>. 尽管这通常会使得键击发送的速度超过<a href="WinActivate.htm">活动窗口</a>的处理速度, 不过系统会自动对它们进行缓冲. 在 <a href="Send.htm">Send</a> 函数完成后, 被缓冲的键击会继续到达目标窗口(即使此窗口现在已经不是活动窗口). 这种情况一般是不要紧的, 因为任何后续发送给相同窗口的键击会排列在缓冲中的那些键击之后.</p> <p>内置变量 <strong>A_KeyDelay</strong> 包含了 Send/SendEvent 模式的当前 <em>Delay</em> 设置. <strong>A_KeyDuration</strong> 包含了 <em>PressDuration</em> 的设置, 同时 <strong>A_KeyDelayPlay</strong> 和 <strong>A_KeyDurationPlay</strong> 包含了 <a href="Send.htm#SendPlayDetail">SendPlay</a> 的设置.</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="ControlSend.htm">ControlSend</a>, <a href="SendMode.htm">SendMode</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="SetControlDelay.htm">SetControlDelay</a>, <a href="SetWinDelay.htm">SetWinDelay</a>, <a href="Click.htm">Click</a></p> <h2 id="Examples">示例</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> 在通过 <a href="Send.htm">Send</a> 或 <a href="ControlSend.htm">ControlSend</a> 每次发送按键后, 产生尽可能小的延迟.</p> <pre>SetKeyDelay 0</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":"94dcbc344a2439e4","version":"2025.5.0","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>