Control


对控件作出多种改变.

Control, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

参数

Cmd, Value 见下表.
Control

可以是 ClassNN (控件的类名和实例号) 或控件的名称/文本, 他们都可以通过 Window Spy 来确定.当使用名称/文本时, 匹配模式由 SetTitleMatchMode 决定.如果此参数为空, 将使用目标窗口的顶层控件.

要对一个控件的 HWND (窗口句柄) 进行操作, 请将 Control 参数留空同时在 WinTitle 参数中指定 ahk_id %ControlHwnd% (即使 DetectHiddenWindows 为 OFF, 这样也适用于隐藏的控件) .获取控件的 HWND 的典型方法是使用 ControlGet Hwnd, MouseGetPos, 或 DllCall 命令.

WinTitle 目标窗口的标题或标题中的部分文字 (匹配模式由 SetTitleMatchMode 决定).如果此参数和后面三个参数都忽略, 默认目标是 上一次匹配窗口.如果此参数是字母 A, 同时省略后面三个参数, 则以当前的活动窗口为目标.要用窗口的类名进行匹配, 请指定 ahk_class ExactClassName (Window Spy 中可以显示类名).要用窗口的 进程标识符 (PID) 进行匹配, 请指定 ahk_pid %PID变量%.要使用 窗口组 进行匹配, 请指定 ahk_group GroupName.要使用窗口的 唯一 ID 进行匹配, 请指定 ahk_id %VarContainingID%.要减小检测范围, 请指定 多重条件.例如: My File.txt ahk_class Notepad
WinText 如果使用这个参数, 则它应该是目标窗口中某个文本元素的子字符串 (在 Window Spy 中会显示窗口中的文本元素).隐藏文本只有当 DetectHiddenText 设置为 ON 的时候才能检测到.
ExcludeTitle 标题中包含该参数指定的文字的窗口将被排除.
ExcludeText 文本元素中包含该参数指定的文字的窗口将被排除.

Cmd, Value

CmdValue 参数相互依赖, 其用法描述如下.

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

Uncheck: 关闭单选框或复选框.

Enable: 启用之前禁用的控件.

Disable: 禁用或灰化控件.

Show: 显示之前隐藏的控件.

Hide: 隐藏控件. 另外, 如果你还想同时禁用控件的快捷键 (加下划线的字母), 请通过 "Control Disable" 命令禁用控件.

Style,N ExStyle,N: 分别改变控件的样式或扩展样式. 如果 N 中的首个字符是加号或减号, 则会增加或移除 N 中指定的样式(可同时指定多个样式, 下同). 如果首个字符是脱字符 (^), 则会切换 N 中指定的样式.如果首个字符是数字, 则控件原来的样式被完全覆盖; 也就是说变成 N 中指定的样式. 如果没有匹配的目标窗口/控件或者不能应用指定样式的时候 (这种情况多出现在 Windows 9x 系统上) ErrorLevel 被设置为 1.

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

Control, Style, ^0x800000, Edit1, WinTitle  ; Set the WS_BORDER style to its opposite state.

ShowDropDown: 拉下组合框使得它的选项可见.

HideDropDown: 功能与上述命令相反.

TabLeft [, Count]TabRight [, Count]: 在 SysTabControl32 控件中向左或向右移动一个或多个标签页. 如果 Count 省略或为空, 则假定为 1. 想要直接用数字选择标签页, 用比你希望选择的标签页编号小 1 的数字替换下面的数字 5. 换句话说, 0 选择首个标签页, 1 选择第二个, 依此类推:

SendMessage, 0x1330, 5,, SysTabControl321, WinTitle  ; 0x1330 is TCM_SETCURFOCUS.
Sleep 0  ; This line and the next are necessary only for certain tab controls.
SendMessage, 0x130C, 5,, SysTabControl321, WinTitle  ; 0x130C is TCM_SETCURSEL.

Add, String: 将 String 作为一个新的条目添加到列表框和组合框 (和其他可能的类型) 的底部.

Delete, N: 删除列表框或组合框中的第 N 个条目. 对首个条目 N 为 1, 对第二个为 2, 依此类推.

Choose, N: 设置列表框或组合框中的选区为第 N 个条目. 对首个条目 N 为 1, 对第二个为 2, 依此类推. 要选择或取消选择 多选 列表框中的所有项目, 请参照此例:

PostMessage, 0x185, 1, -1, ListBox1, WinTitle  ; Select all listbox items. 0x185 is LB_SETSEL.

ChooseString, String: 设置列表框或组合框中的选区为开始部分匹配 String 的首个条目. 搜索不区分大小写.例如, 如果列表框/组合框包含条目 "UNIX Text", 指定单词 unix (小写) 足以选中它.

EditPaste, String: 在编辑控件的光标处/插入位置粘贴 String (此功能不会影响 clipboard 的内容).

ErrorLevel

如果出现错误, ErrorLevel 被设置为 1, 否则为 0.

备注

为了提高可靠性, 在每次使用此命令后都自动地有一个延迟. (StyleExStyle 除外). 这个延迟可以通过 SetControlDelay 改变.

要获取当前鼠标所指向控件的名称, 请使用 MouseGetPos.

窗口中的标题和文字是大小写敏感的.要检测隐藏窗口, 必须打开 DetectHiddenWindows.

相关

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

示例

Control, HideDropDown, , ComboBox1, Some Window Title