发送鼠标按钮或鼠标滚轮事件到控件.
ControlClick , Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText
如果为空或省略, 则点击目标窗口的顶层控件(或如果窗口没有控件则点击窗口自身). 否则, 请使用以下模式之一.
模式 1(位置): 指定相对于目标窗口左上角的 X 和 Y 坐标. X 坐标必须在 Y 坐标前面, 且它们之间需要含有至少一个空格或 tab. 例如: X55 Y33
. 如果在指定的坐标存在控件, 则会发送点击事件到这个坐标处. 如果没有控件, 则发送事件到目标窗口自身(根据窗口的性质, 这可能不会产生效果).
注意: 在此模式中, 会忽略 Options 参数中的 X 和 Y 字母选项.
模式 2(ClassNN 或文本): 可以指定 ClassNN(控件的类名和实例编号) 或控件的名称/文本, 它们都可以通过 Window Spy 获取. 使用名称/文本时, 匹配行为由 SetTitleMatchMode 决定.
默认情况下, 模式 2 优先于模式 1. 例如, 在一种不太可能的情况中某个控件的文本或 ClassNN 格式为 "Xnnn Ynnn", 那么此时会使用模式 2. 要覆盖此行为而无条件使用模式 1, 请在 Options 中加上单词 Pos, 例如: ControlClick, x255 y152, WinTitle,,,, Pos
要操作控件的 HWND(窗口句柄), 请将此参数留空同时在 WinTitle 参数中指定 ahk_id %ControlHwnd%
(即使在 DetectHiddenWindows 设置关闭时, 这样也可以操作隐藏控件). 获取控件的 HWND 的一般方法是使用 ControlGet Hwnd, MouseGetPos 或 DllCall().
如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).
ExcludeTitle 和 ExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitle 和 WinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件.
窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindows 和 DetectHiddenText 进行更改. 默认情况下, 窗口标题必须以指定的 WinTitle 或 ExcludeTitle 开头才能匹配, 除非使用 SetTitleMatchMode 进行更改.
如果为空或省略, 默认为 Left(鼠标左键). 否则, 指定要单击的按钮或鼠标滚轮的旋转/推入方向.
按钮: Left, Right, Middle(或这些单词的首字母); X1(第四个按钮) 或 X2(第五个按钮).
鼠标滚轮: 指定 WheelUp 或 WU 使滚轮向上转动(远离你); 指定 WheelDown 或 WD 使滚轮向下转(朝向你). [v1.0.48+]: 指定 WheelLeft(或 WL) 或 WheelRight(或 WR) 分别向左或向右转动(但这些对 Windows Vista 以前的操作系统没有影响). ClickCount 为需要转动的滚轮格数.
如果为空或省略, 默认为 1. 否则, 请指定单击鼠标按钮或转动鼠标滚轮的次数, 可以是表达式.
如果为空或省略, 每次单击都由一个向下事件和一个向上事件组成, 并且在模式 2 生效时发生在控件的中心. 否则, 请指定一个或多个下列选项组成的系列. 例如: d x50 y25
.
NA [v1.0.45+]: 也许可以提高可靠性. 请参阅后面的可靠性.
D: 按住鼠标按钮不放(即生成按下事件). 如果 D 和 U 选项都没有包含, 则会发送完整的点击事件(按下事件和弹起事件).
U: 释放鼠标按钮(即生成弹起事件). 此选项不能和 D 选项同时使用.
Pos: 在 Options 的任意位置指定单词 Pos, 这样会无条件使用在上面 Control-or-Pos 参数中描述的 X/Y 位置模式.
Xn: 指定 n 为要点击的相对于控件左上角的 X 坐标. 如果未指定, 则在控件的水平中心点击.
Yn: 指定 n 为要点击的相对于控件左上角的 Y 坐标. 如果未指定, 则在控件的垂直中心点击.
在 X 和 Y 选项中使用十进制数而不是十六进制数.
[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.
如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.
要提高可靠性, 尤其是在 ControlClick 期间用户同时在使用鼠标, 请尝试下面的一种或两种方法也许会有所帮助:
1) 请在 ControlClick 前面加上 SetControlDelay -1
. 这样可以避免在点击时按住鼠标, 减少对用户使用鼠标的干扰.
2) 在第六个参数(Options) 中指定字符串 NA, 如下所示:
SetControlDelay -1 ControlClick, Toolbar321, WinTitle,,,, NA
NA 选项可以避免激活目标窗口, 同时避免混淆它和脚本的输入, 这样可以防止鼠标实际移动产生的冲突(但通常只在目标窗口不活动时). 然而, 此方法不是对所有的窗口和控件都有效.
在滚动鼠标滚轮时, 有些程序不会接受大于 1 的 ClickCount. 对于这些程序, 请使用循环来转动多个格数, 例如这个例子转动 5 格:
Loop, 5 ControlClick, Control, WinTitle, WinText, WheelUp
SetControlDelay, Control, ControlGet, ControlGetText, ControlMove, ControlGetPos, ControlFocus, ControlSetText, ControlSend, Click