ControlGetPos

获取控件的位置和大小.

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

参数

OutX, OutY

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

OutWidth, OutHeight

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

Control

如果为空或省略, 则使用目标窗口中最顶部的控件. 否则, 请指定 ClassNN(控件的类名和实例编号) 或控件的文本, 它们都可以通过 Window Spy 获取. 使用文本时, 匹配行为由 SetTitleMatchMode 决定.

要对控件的 HWND(窗口句柄) 进行操作, 请将 Control 参数留空同时在 WinTitle 参数中指定 ahk_id %ControlHwnd%(即使在 DetectHiddenWindows 设置关闭时, 这样也可以操作隐藏控件). 获取控件的 HWND 的一般方法是使用 ControlGet Hwnd, MouseGetPosDllCall().

WinTitle, WinText, ExcludeTitle, ExcludeText

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

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

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

备注

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

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

要获取鼠标当前悬停的控件的 ClassNN 或 HWND, 请使用 MouseGetPos. 要获取窗口中所有控件的列表, 请使用 WinGet ControlList.

ControlMove, WinGetPos, 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%
}