# ControlGetPos

Retrieves the position and size of a control.

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

### Parameters

X, Y | The names of the variables in which to store the X and Y coordinates (in pixels) of Control's upper left corner. These coordinates are relative to the target window's upper-left corner and thus are the same as those used by ControlMove. If either X or Y is omitted, the corresponding values will not be stored.
Width/Height | The names of the variables in which to store Control's width and height (in pixels). If omitted, the corresponding values will not be stored.
Control | Can be either ClassNN (the classname and instance number of the control) or the name/text of the control, both of which can be determined via Window Spy. When using name/text, the matching behavior is determined by SetTitleMatchMode. If this parameter is blank, the target window's topmost control will be used. To operate upon a control's HWND (window handle), leave the Control parameter blank and specify ahk_id %ControlHwnd% for the WinTitle parameter (this also works on hidden controls even when DetectHiddenWindows is Off) . The HWND of a control is typically retrieved via ControlGet Hwnd, MouseGetPos, or DllCall.
WinTitle | A window title or other criteria identifying the target window. See WinTitle.
WinText | If present, this parameter must be a substring from a single text element of the target window (as revealed by the included Window Spy utility). Hidden text elements are detected if DetectHiddenText is ON.
ExcludeTitle | Windows whose titles include this value will not be considered.
ExcludeText | Windows whose text include this value will not be considered.

### Remarks

If no matching window or control is found, the output variables will be made blank.

Unlike commands that change a control, ControlGetPos does not have an automatic delay (SetControlDelay does not affect it).

To discover the name of the control that the mouse is currently hovering over, use MouseGetPos. To retrieve a list of all controls in a window, use WinGet.

Window titles and text are case sensitive. Hidden windows are not detected unless DetectHiddenWindows has been turned on.

### Related

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

### Example

    ; This working example will continuously update and display the
    ; name and position of the control currently under the mouse cursor:
    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%
    }