<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script> <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>ControlClick</h1> <p>发送鼠标按钮或鼠标滚轮事件到控件.</p> <pre class="Syntax"><span class="func">ControlClick</span> <span class="optional">, Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText</span></pre> <h2 id="Parameters">参数</h2> <dl> <dt>Control-or-Pos</dt> <dd><p>如果此参数为空, 则点击目标窗口的顶层控件(或如果窗口没有控件则点击窗口自身). 否则, 使用下列两种模式的其中一个.</p> <p>模式 1(位置): 指定相对于目标窗口左上角的 X 和 Y 坐标. X 坐标必须在 Y 坐标前面, 且它们之间需要含有至少一个空格或 tab. 例如: <code>X55 Y33</code>. 如果在指定的坐标存在控件, 则会发送点击事件到这个坐标处. 如果没有控件, 则发送事件到目标窗口自身(根据窗口的性质, 这可能不会产生效果).</p> <p class="note"><strong>注意</strong>: 在此模式中, 会忽略 <em>Options</em> 参数中的 X 和 Y 字母选项.</p> <p>模式 2(ClassNN 或文本): 可以指定 ClassNN(控件的类名和实例编号) 或控件的名称/文本, 它们都可以通过 Window Spy 获取. 使用名称/文本时, 匹配行为由 <a href="SetTitleMatchMode.htm">SetTitleMatchMode</a> 决定.</p> <p>默认情况下, 模式 2 优先于模式 1. 例如, 在一种不太可能的情况中某个控件的文本或 ClassNN 格式为 "Xnnn Ynnn", 那么此时会使用模式 2. 要覆盖此行为而无条件使用模式 1, 请在 <em>Options</em> 中加上单词 Pos, 例如: <code>ControlClick, x255 y152, WinTitle,,,, Pos</code></p> <p>要操作控件的 HWND(窗口句柄), 请将此参数留空同时在 <em>WinTitle</em> 参数中指定 <code>ahk_id %ControlHwnd%</code>(即使在 <a href="DetectHiddenWindows.htm">DetectHiddenWindows</a> 设置关闭时, 这样也可以操作隐藏控件). 获取控件的 HWND 的一般方法是使用 <a href="ControlGet.htm#Hwnd">ControlGet Hwnd</a>, <a href="MouseGetPos.htm">MouseGetPos</a> 或 <a href="DllCall.htm">DllCall()</a>.</p></dd> <dt>WinTitle</dt> <dd><p>窗口标题或识别目标窗口的其他条件. 请参阅 <a href="../misc/WinTitle.htm">WinTitle</a>.</p></dd> <dt>WinText</dt> <dd><p>如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 当 <a href="DetectHiddenText.htm">DetectHiddenText</a> 的设置为 ON 时, 那么会检测到隐藏文本元素.</p></dd> <dt>WhichButton</dt> <dd><p>要点击的按钮: LEFT, RIGHT, MIDDLE(或这些单词的首个字母). 如果省略或为空, 则使用 LEFT 按钮.</p> <p>还支持 X1(XButton1: 第四个鼠标按钮) 和 X2(XButton2: 第五个鼠标按钮).</p> <p>还支持 WheelUp(或 WU) 和 WheelDown(或 WD). 此时 <em>ClickCount</em> 为需要转动的滚轮格数.</p> <p>Windows Vista 或更高版本 <span class="ver">[v1.0.48+]:</span> 还支持 WheelLeft(或 WL) 和 WheelRight(或 WR)(它们在较旧的操作系统中没有效果). 此时 <em>ClickCount</em> 为需要转动的滚轮格数.</p> </dd> <dt>ClickCount</dt> <dd><p>要点击鼠标的次数, 可以为<a href="../Variables.htm#Expressions">表达式</a>. 如果省略或为空, 则点击 1 次.</p></dd> <dt>Options(选项)</dt> <dd><p>零个或多个下列选项字母组成的系列. 例如: <code>d x50 y25</code>.</p> <p><strong>NA</strong> <span class="ver">[v1.0.45+]:</span> 也许可以提高可靠性. 请参阅后面的<a href="#Reliability">可靠性</a>.</p> <p><strong>D</strong>: 按住鼠标按钮不放(即生成按下事件). 如果 <strong>D</strong> 和 <strong>U</strong> 选项都没有包含, 则会发送完整的点击事件(按下事件和弹起事件).</p> <p><strong>U</strong>: 释放鼠标按钮(即生成弹起事件). 此选项不能和 <strong>D</strong> 选项同时使用.</p> <p><strong>Pos</strong>: 在 <em>Options</em> 的任意位置指定单词 Pos, 这样会无条件使用在上面 <em>Control-or-Pos</em> 参数中描述的 X/Y 位置模式.</p> <p><strong>Xn</strong>: 指定 <strong>n</strong> 为要点击的相对于控件左上角的 X 坐标. 如果未指定, 则在控件的水平中心点击.</p> <p><strong>Yn</strong>: 指定 <strong>n</strong> 为要点击的相对于控件左上角的 Y 坐标. 如果未指定, 则在控件的垂直中心点击.</p> <p>在 <strong>X</strong> 和 <strong>Y</strong> 选项中使用十进制数而不是十六进制数.</p></dd> <dt>ExcludeTitle</dt> <dd><p>标题中含有此参数值的窗口将被排除.</p></dd> <dt>ExcludeText</dt> <dd><p>文本中含有此参数值的窗口将被排除.</p></dd> </dl> <h2 id="Error_Handling">错误处理</h2> <p><span class="ver">[v1.1.04+]</span>: 此命令失败时会抛出异常. 想了解更多信息, 请参阅<a href="Catch.htm#RuntimeErrors">运行时错误</a>.</p> <p>如果遇到问题则 <a href="../misc/ErrorLevel.htm">ErrorLevel</a> 被置为 1, 否则为 0.</p> <h2 id="Reliability">可靠性</h2> <p>要提高可靠性, 尤其是在 ControlClick 期间用户同时在使用鼠标, 请尝试下面的一种或两种方法也许会有所帮助:</p> <p>1) 请在 ControlClick 前面加上 <code><a href="SetControlDelay.htm">SetControlDelay</a> -1</code>. 这样可以避免在点击时按住鼠标, 减少对用户使用鼠标的干扰.</p> <p>2) 在第六个参数(<em>Options</em>) 中指定字符串 NA, 如下所示:</p> <pre>SetControlDelay -1 ControlClick, Toolbar321, WinTitle,,,, NA</pre> <p><code>NA</code> 可以避免激活目标窗口, 同时避免混淆它和脚本的输入, 这样可以防止鼠标实际移动产生的冲突(但通常只在目标窗口不活动时). 然而, 此方法不是对所有的窗口和控件都有效.</p> <h2 id="Remarks">备注</h2> <p>在滚动鼠标滚轮时, 有些程序不会接受大于 1 的 <em>ClickCount</em>. 对于这些程序, 请使用循环来转动多个格数, 例如这个例子转动 5 格:</p> <pre>Loop, 5 ControlClick, <i>Control</i>, <i>WinTitle</i>, <i>WinText</i>, WheelUp</pre> <p>窗口标题和文本是区分大小写的. 只有在打开 <a href="DetectHiddenWindows.htm">DetectHiddenWindows</a> 设置时, 才能检测到隐藏窗口.</p> <h2 id="Related">相关</h2> <p><a href="SetControlDelay.htm">SetControlDelay</a>, <a href="Control.htm">Control</a>, <a href="ControlGet.htm">ControlGet</a>, <a href="ControlGetText.htm">ControlGetText</a>, <a href="ControlMove.htm">ControlMove</a>, <a href="ControlGetPos.htm">ControlGetPos</a>, <a href="ControlFocus.htm">ControlFocus</a>, <a href="ControlSetText.htm">ControlSetText</a>, <a href="ControlSend.htm">ControlSend</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> 点击 OK(确定) 按钮.</p> <pre>ControlClick, OK, Some Window Title</pre> </div> <div class="ex" id="ExCoord"> <p><a class="ex_number" href="#ExCoord"></a> 在坐标上进行点击. 注意 X 和 Y 之间没有逗号.</p> <pre>ControlClick, x55 y77, Some Window Title</pre> </div> <div class="ex" id="ExReliability"> <p><a class="ex_number" href="#ExReliability"></a> 在 NA 模式下, 点击相对于命名控件的坐标.</p> <pre>SetControlDelay -1 <em>; 提升可靠性并减少副作用.</em> ControlClick, Toolbar321, Some Window Title,,,, NA x192 y10</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":"9594aaa32f7336d7","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>