Control

对控件进行各种改变.

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

参数

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

如果为空或省略, 则将使用目标窗口的最顶层控件. 否则, 请指定控件的 ClassNN 或文本, 或者留空并指定 ahk_id %ControlHwnd% 作为 WinTitle 参数, 以便针对该控件的 HWND 进行操作. 有关详情, 请参阅控件标识符.

WinTitle, WinText, ExcludeTitle, ExcludeText

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

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

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

子命令

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

Check

选中复选框或单选按钮.

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

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

Uncheck

取消选中复选框或单选按钮.

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

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

Disable

禁用(灰化) 控件.

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

Enable

启用之前禁用的控件.

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

Hide

隐藏控件.

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

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

Show

显示之前隐藏的控件.

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

Style

改变控件的样式.

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

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

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

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

ExStyle

改变控件的扩展样式.

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

有关详情, 请参阅 Style 子命令.

ShowDropDown

显示组合框或下拉列表的弹出列表.

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

HideDropDown

隐藏组合框或下拉列表的弹出列表.

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

TabLeft

在 Tab 控件中向左移动一个或多个页面.

Control, TabLeft , Count, ControlID, 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

在 Tab 控件中向右移动一个或多个页面.

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

有关详情, 请参阅 TabLeft 子命令.

Add

在列表框, 组合框或下拉列表的底部添加一个新的条目.

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

Delete

通过索引从列表框, 组合框或下拉列表中删除一个条目.

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

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

Choose

通过索引在列表框, 组合框或下拉列表中选择一个条目.

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

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

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

ChooseString

通过字符串在列表框, 组合框或下拉列表中选择一个条目.

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

搜索在文本以指定字符串开头的第一个条目处停止. 换句话说, 如果 String 与多个条目匹配, 那么会选中第一个匹配的条目.

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

EditPaste

在编辑控件的光标处粘贴字符串.

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

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

错误处理

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

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

备注

此命令适用于非图形用户界面窗口中的控件, 即那些不是通过 Gui 命令创建的窗口. 它与常见的或预定义的微软控件配合使用效果最佳; 有些应用程序使用自定义或修改后的控件, 在这种情况下, 该命令可能无法按预期运行. 对于 GUI 控件, 通常更方便的做法是使用 GuiControl, 前提是存在相应的对应功能.

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

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

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

示例

隐藏 Gui 或非 Gui 窗口中第一个组合框的下拉列表.

Control, HideDropDown,, ComboBox1, Some Window Title