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 实用程序显示).

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

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

备注

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

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

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

要获取鼠标当前悬停的控件的 ClassNNHWND, 请使用 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%
}