ControlGetPos


取得一个 control (控件)的位置和大小。

ControlGetPos [, X, Y, Width, Height, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

参数

X, Y

储存 Control 左上角的 X 和 Y 坐标(以像素表示)的 variables (变量)名称。这些坐标和目标窗口的左上角相关联,因而与被用在 ControlMove 中的坐标是一样的。

如果 X 或 Y 被省略,相应的坐标将不被储存。

Width/Height
储存 Control 的高和宽(以像素表示)的变量名称。如果省略,相应的值将不被储存。
Control

可以是控件的名称/文本或 ClassNN (控件的 classname (类名)和序号),它们都可以通过 Window Spy 来确定。当使用名称/文本时,matching behavior (匹配模式)通过 SetTitleMatchMode 决定。如果此 parameter (参数)为空,目标窗口的顶端控件将被使用。

要对一个控件的 HWND (窗口 handle (句柄))进行操作,将 Control 参数留空并为 WinTitle 参数指定 ahk_id %ControlHwnd% (这样即使当 DetectHiddenWindows 是 Off 状态,它也能对隐藏的控件起作用)。一个控件的 HWND 往往由 ControlGet Hwnd 、MouseGetPos 或 DllCall 取得。

WinTitle 目标窗口的标题或副标题(匹配模式由 SetTitleMatchMode 决定)。如果此参数和后面的3个参数被省略, Last Found Window (最近找到的窗口)将被使用。如果此参数是字母 A 并且后面的三个参数被省略,active (激活的)窗口将被使用。要使用一个窗口类,指定 ahk_class 确切的类名(通过 Window Spy 显示)。要使用一个 process identifier (PID) (进程标识符),指定 ahk_pid %包含PID的变量% 。要使用一个 window group (窗口组),指定 ahk_group GroupName 。要使用一个窗口的 unique ID number (唯一标识符编号),指定 ahk_id %包含ID的变量% 。通过指定 multiple criteria (多个条件)缩小搜索范围。例如:My File.txt ahk_class Notepad
WinText 如果用到,此参数必须是目标窗口的一个单独 text element (文本对象)的 substring (子字串)(像内置的 Window Spy 工具显示的一样)。如果 DetectHiddenText 是 ON 的状态,隐藏的文本对象将被探测。
ExcludeTitle 标题含有此参数值的窗口将不被考虑。
ExcludeText 文本含有此参数值的窗口将不被考虑。

注意

如果没有找到匹配的窗口或控件,输出变量将为空。

与改变一个控件的命令不同,ControlGetPos 没有一个自动的延迟( SetControlDelay 不会影响它)。

要找出鼠标当前停留的控件的名称,使用 MouseGetPos 。要获得一个窗口内所有控件的列表,使用 WinGet 。

窗口标题和文本是 case sensitive (区分大小写)的。隐藏的窗口将不被探测,除非 DetectHiddenWindows 已被打开。

相关命令

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%
}
翻译:坛友baggio1987   修正:天堂之门 menk33@163.com 2008年7月30日