# MouseGetPos

获取鼠标光标的当前位置, 以及它悬停在哪个窗口和控件上.

    MouseGetPos &OutputVarX, &OutputVarY, &OutputVarWin, &OutputVarControl, Flag

## 参数

&OutputVarX, &OutputVarY

  类型: VarRef

  如果未设置或省略, 则不使用输出变量. 否则, 请指定用于存储 X 和 Y 坐标的变量的引用. 获取的坐标相对于活动窗口的客户端区域, 除非曾使用 CoordMode 改变为屏幕坐标.

&OutputVarWin

  类型: VarRef

  如果未设置或省略, 则不使用输出变量. 否则, 请指定用来保存鼠标光标下窗口的唯一 ID 号的变量的引用. 如果无法检测到窗口, 则此变量被置空.

  即使窗口不处于活动状态, 也能检测到它的信息. 无法检测到隐藏窗口.

&OutputVarControl

  类型: VarRef

  如果未设置或省略, 则不使用输出变量. 否则, 请指定用来保存鼠标光标下控件的类名(ClassNN) 的变量的引用. 如果无法检测到控件, 则此变量被置空.

  控件的名称应该总是和 Window Spy 中显示的相同. 即使鼠标光标下的窗口不处于活动状态, 也能检测到其中控件的信息.

Flag

  类型: 整数

  如果未设置或省略, 这意味着函数使用默认方法来确定 OutputVarControl 并存储控件的 ClassNN. 否则, 请指定以下数字的组合(和):

  1: 使用更简单的方法来获取 OutputVarControl. 这种方法可以正确获取多文档界面(MDI) 应用程序(例如 SysEdit 或 TextPad) 的活动/顶级子窗口的信息. 不过, 对于其他的情况(例如获取 GroupBox 控件中的控件) 就没有那么准确了.

  2: 把控件的 HWND 保存到 OutputVarControl 而不是控件的 ClassNN.

  例如, 要使上面两个选项都生效, Flag 参数必须设置为 3(1+2).

## 备注

如果不需要相应的信息, 则可以省略相应的输出变量.

在具有不同 DPI 设置的多个屏幕的系统上, 由于操作系统 DPI 缩放, 返回的位置和大小可能与预期不同.

## 相关

CoordMode, 窗口函数, SetDefaultMouseSpeed, Click

## 示例

报告鼠标光标的位置.

    MouseGetPos &xpos, &ypos
    MsgBox "The cursor is at X" xpos " Y" ypos

显示当前在鼠标光标下窗口的 HWND, 类名, 标题和控件.

    SetTimer WatchCursor, 100

    WatchCursor()
    {
        MouseGetPos , , &id, &control
        ToolTip
        (
            "ahk_id " id "
            ahk_class " WinGetClass(id) "
            " WinGetTitle(id) "
            Control: " control
        )
    }

dftg