ControlGetPos

获取控件的位置和大小.

ControlGetPos , OutX, OutY, OutWidth, OutHeight, ControlID, WinTitle, WinText, ExcludeTitle, ExcludeText

参数

OutX, OutY

如果省略, 将不存储对应的值. 否则, 请指定用于保存 Control 左上角的 X 和 Y 坐标(单位为像素) 的输出变量的名称. 这些坐标相对于目标窗口的左上角, 因此它们和 ControlMove 中使用的坐标是一样的.

OutWidth, OutHeight

如果省略, 将不存储对应的值. 否则, 请指定用于储存 Control 宽度和高度(单位为像素) 的输出变量的名称.

Control

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

WinTitle, WinText, ExcludeTitle, ExcludeText

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

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

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

备注

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

如果没有找到匹配窗口或控件, 则输出变量会被置空.

和其他改变控件的命令不同, ControlGetPos 后没有自动的延时(SetControlDelay 不会影响它).

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

要获取窗口中所有控件的列表, 请使用 WinGet ControlList.

ControlMove, WinGetPos, GuiControlGet Pos, Control, ControlGet, ControlGetText, ControlSetText, ControlClick, ControlFocus, ControlSend

示例

持续地更新和显示当前鼠标光标下的控件的名称和位置:

Loop
{
    Sleep, 100
    MouseGetPos, , , WhichWindow, WhichControl
    ControlGetPos, x, y, w, h, %WhichControl%, ahk_id %WhichWindow%
    ToolTip, %WhichControl%`nX%X%`tY%Y%`nW%W%`t%H%
}