Control

对控件进行各种改变.

Control, SubCommand , Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

参数

SubCommand, Value
他们互相依赖, 其用法描述如下.
Control

如果为空或省略, 则使用在目标窗口顶层的控件. 否则, 请指定 ClassNN(控件的类名和实例编号) 或控件的文本, 它们都可以通过 Window Spy 获取. 使用文本时, 匹配行为由 SetTitleMatchMode 决定.

要对控件的 HWND(窗口句柄) 进行操作, 请将 Control 参数留空同时在 WinTitle 参数中指定 ahk_id %ControlHwnd%(即使在 DetectHiddenWindows 设置关闭时, 这样也可以操作隐藏控件). 获取控件的 HWND 的一般方法是使用 ControlGet Hwnd, MouseGetPosDllCall().

WinTitle, WinText, ExcludeTitle, ExcludeText

如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).

ExcludeTitleExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitleWinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件.

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题必须以指定的 WinTitleExcludeTitle 开头才能匹配, 除非使用 SetTitleMatchMode 进行更改.

子命令

对于 SubCommand, 指定以下命令之一:

Check

打开(选中) 单选框或复选框.

Control, Check ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

为确保功能正确, 此子命令还将设置输入焦点到控件上.

Uncheck

关闭(取消选中) 单选框或复选框.

Control, Uncheck ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

为确保功能正确, 此子命令还将设置输入焦点到控件上.

Enable

启用之前禁用的控件.

Control, Enable ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

Disable

禁用或 "灰化" 控件.

Control, Disable ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

Show

显示之前隐藏的控件.

Control, Show ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

Hide

隐藏控件.

Control, Hide ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

如果您还想同时禁用控件的快捷键(加下划线的字母), 使用 Disable 子命令来禁用控件.

Style

改变控件的样式.

Control, Style, N , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

如果 N 的首个字符为加号或减号, 那么会分别添加或移除 N 中的样式. 如果首个字符为脱字符(^), 那么 N 中的样式会被切换到相反的状态. 如果首个字符为数字, 则控件样式会被完全覆盖; 也就是说, 它变成了 N. 没有找到目标窗口/控件或无法应用此样式时, ErrorLevel 设为 1.

改变某些样式后需要使用 WinSet Redraw 重绘整个窗口. 此外, 样式表列出了一些样式编号. 例如:

Control, Style, ^0x800000, Edit1, WinTitle  ; 切换 WS_BORDER 样式到相反状态.

ExStyle

改变控件的扩展样式.

Control, ExStyle, N , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

详情请参阅上面的 Style 子命令.

ShowDropDown

显示 ComboBox 控件的下拉列表.

Control, ShowDropDown ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

HideDropDown

隐藏 ComboBox 控件的下拉列表.

Control, HideDropDown ,, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

TabLeft

在 SysTabControl32 中向左移动一个或多个选项卡.

Control, TabLeft , Count, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

如果 Count 为空或省略, 则默认为 1. 要通过编号直接选择选项卡, 请把下面示例中的数字 5 替换为比您想要选择的选项卡的编号小 1 的数字. 换句话说, 使用 0 选择首个选项卡, 1 选择第二个, 依此类推:

SendMessage, 0x1330, 5,, SysTabControl321, WinTitle  ; 0x1330 为 TCM_SETCURFOCUS.
Sleep 0  ; 此行和下一行只对于某些选项卡控件才需要.
SendMessage, 0x130C, 5,, SysTabControl321, WinTitle  ; 0x130C 为 TCM_SETCURSEL.

TabRight

在 SysTabControl32 中向右移动一个或多个选项卡.

Control, TabRight , Count, Control, WinTitle, WinText, ExcludeTitle, ExcludeText

详情请参阅上面的 TabLeft 子命令.

Add

String 作为新条目添加到列表框(ListBox) 或组合框(ComboBox)(以及其他适合的类型) 的底部.

Control, Add, String , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

Delete

删除列表框或组合框中的第 N 个条目.

Control, Delete, N , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

对于首个条目 N 为 1, 对第二个则为 2, 等等.

Choose

设置列表框或组合框中的选择为第 N 个条目.

Control, Choose, N , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

对于首个条目 N 为 1, 对第二个则为 2, 等等. 要选择或取消选择 多选 列表框中的所有项目, 请参照此例:

PostMessage, 0x0185, 1, -1, ListBox1, WinTitle  ; 选择所有项目. 0x0185 为 LB_SETSEL.

ChooseString

将列表框或组合框中的选择(选项) 设置为开头部分与指定的 字符 匹配的第一个条目.

Control, ChooseString, String , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

搜索不区分大小写. 例如, 如果列表框/组合框包含条目 "UNIX Text", 那么指定单词 unix(小写) 也能选中它.

EditPaste

在编辑控件(Edit control) 的光标处/插入位置粘贴 String.

Control, EditPaste, String , Control, WinTitle, WinText, ExcludeTitle, ExcludeText

这不会影响剪贴板中的内容.

错误处理

[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.

如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.

备注

为了提高可靠性, 每次使用此命令后都会自动进行延迟(不包括 StyleExStyle 子命令). 这个延迟可以通过设置 SetControlDelay 来调整.

要获取鼠标当前悬停的控件的 ClassNN 或 HWND, 请使用 MouseGetPos.

SetControlDelay, ControlGet, GuiControl, ControlGetText, ControlSetText, ControlMove, ControlGetPos, ControlClick, ControlFocus, ControlSend, WinSet

示例

隐藏第一个 ComboBox 的下拉列表.

Control, HideDropDown,, ComboBox1, Some Window Title