# 控件函数

函数检索有关控件的信息, 或对控件进行各种更改. 单击函数名查看详细信息.

函数 | 描述
--- | ---
ControlAddItem | 添加指定的字符串作为 ListBox(列表框) 或 ComboBox(组合框) 底部的新条目.
ControlChooseIndex | 设置列表框, 组合框或标签页控件中的选择为指定的条目或选项卡编号.
ControlChooseString | 将 ListBox 或 ComboBox 中的选择设置为其开头部分与指定字符串匹配的第一个条目.
ControlClick | 发送鼠标按钮或鼠标滚轮事件到控件.
ControlDeleteItem | 从 ListBox 或 ComboBox 中删除指定的条目.
ControlFindItem | 返回与指定字符串完全匹配的 ListBox 或 ComboBox 的条目的编号.
ControlFocus | 设置输入焦点到窗口的指定控件上.
ControlGetChecked | 如果选中复选框或单选按钮, 则返回非零值.
ControlGetChoice | 返回列表框或组合框中当前选定项的名称.
ControlGetClassNN | 返回指定控件的 ClassNN(类名和序号).
ControlGetEnabled | 如果指定的控件是启用的, 则返回非零值.
ControlGetFocus | 如果有, 则获取目标窗口中具有输入焦点的控件.
ControlGetHwnd | 返回指定控件的唯一 ID.
ControlGetIndex | 返回 ListBox, ComboBox 或 Tab 控件中当前选中的条目或标签的索引.
ControlGetItems | 返回 ListBox, ComboBox 或 DropDownList 中的项目/行数组.
ControlGetPos | 获取控件的位置和大小.
ControlGetStyle ControlGetExStyle | 返回表示指定控件样式或扩展样式的整数.
ControlGetText | 从控件检索文本.
ControlGetVisible | 如果指定的控件可见, 则返回非零值.
ControlHide | 隐藏指定控件.
ControlHideDropDown | 隐藏 ComboBox 控件的下拉列表.
ControlMove | 移动或调整控件.
ControlSend ControlSendText | 向窗口或控件发送模拟的击键或文本.
ControlSetChecked | 打开(选中) 或关闭(取消选中) 复选框或单选按钮.
ControlSetEnabled | 启用或禁用指定的控件.
ControlSetStyle ControlSetExStyle | 分别更改指定控件的样式或扩展样式.
ControlSetText | 更改控件的文本.
ControlShow | 如果指定的控件先前是隐藏的, 则显示该控件.
ControlShowDropDown | 显示 ComboBox 控件的下拉列表.
EditGetCurrentCol | 返回编辑控件中插入点所在的列号.
EditGetCurrentLine | 返回编辑控件中插入点所在的行号.
EditGetLine | 返回 Edit 控件中指定行的文本.
EditGetLineCount | 返回 Edit 控件的行数.
EditGetSelectedText | 返回 Edit 控件中选定的文本.
EditPaste | 将指定的字符串粘贴到 Edit 控件中的插入符号(文本插入点) 处.
ListViewGetContent | 返回列表视图中的项目/行列表.

## Control 参数

操作单个控件的函数有一个名为 Control 的参数, 该参数支持几种不同的方法来识别控件. Control 参数可以是以下参数之一:

ClassNN(字符串): 控件的 ClassNN(类名和实例号), 可以通过 Window Spy 来确定. 例如 "Edit1" 是类名为 "Edit" 的第一个控件.

Text(字符串): 控件的文本. 匹配行为由 SetTitleMatchMode 决定.

HWND(整数): 控件的 HWND, 通常通过 ControlGetHwnd, MouseGetPos 或 DllCall 检索. 这也适用于隐藏控件, 即使 DetectHiddenWindows 关闭. 任何后续的窗口参数都被忽略.

Object: 具有 `Hwnd` 属性的任何类型的对象, 如 GuiControl. 如果对象没有 `Hwnd` 属性, 则抛出 PropertyError, 或不返回纯整数, 则抛出 TypeError. 任何后续的窗口参数都将被忽略.

省略: 一些函数可以操作控件或顶级窗口. 省略 Control 参数会导致函数使用目标窗口(由 WinTitle 指定) 而不是它的一个控件. 例如, ControlSend 可以直接发送键盘消息到窗口.

## 错误处理

通常情况下, 可能会抛出以下错误之一:

- TargetError: 找不到目标窗口或控件.
- Error 或 OSError: 在执行该函数的目的时出现了问题, 例如检索设置或应用更改.
- ValueError 或 TypeError: 检测到无效参数.

## 备注

为了提高可靠性, 在每次使用更改控件的控件函数(除了 ControlSetStyle 和 ControlSetExStyle 外) 之后, 会自动执行延迟. 该延迟可以通过 SetControlDelay 或给 A_ControlDelay 赋值来更改. 有关详情, 请参阅 SetControlDelay 备注.

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

要检索窗口中所有控件的列表, 请使用 WinGetControls 或 WinGetControlsHwnd.

窗口标题和文本是区分大小写的. 除非 DetectHiddenWindows 被打开, 否则不会检测隐藏窗口.

## 相关

SetControlDelay, Win 函数, GuiControl 对象(用于由脚本创建的控件)

dftg