WinGetClientPos

检索指定窗口的工作区的位置和大小.

WinGetClientPos &OutX, &OutY, &OutWidth, &OutHeight, WinTitle, WinText, ExcludeTitle, ExcludeText

参数

&OutX, &OutY

类型: VarRef

如果省略, 将不会存储相应的值. 否则, 请指定用于存储工作区左上角的 X 和 Y 坐标的输出变量的引用.

&OutWidth, &OutHeight

类型: VarRef

如果省略, 将不会存储相应的值. 否则, 请指定用于存储工作区宽度和高度的输出变量的引用.

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

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

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

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题的任意位置包含 WinTitleExcludeTitle 就能形成匹配, 除非使用 SetTitleMatchMode 进行了更改.

错误处理

如果找不到窗口, 则抛出 TargetError.

备注

工作区是窗口的一部分, 可以包含控件. 它不包括窗口的标题栏, 菜单栏(如果有标准菜单) 和边框. 与 WinGetPos 返回的值相比, 工作区的位置和大小较少地依赖于操作系统版本和主题.

如果 WinTitle"Program Manager", 该函数将检索桌面的大小, 通常与当前屏幕分辨率相同.

最小化的窗口仍然有位置和大小. 在这种情况下, 返回的值可能因操作系统和配置而异, 但是 X 和 Y 坐标通常为 -32000, 而宽度和高度为 0.

要发现鼠标当前悬停在其上的窗口和控件的名称, 请使用 MouseGetPos.

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

WinGetPos, WinMove, ControlGetPos, WinGetTitle, WinGetText, ControlGetText

示例

获取和报告计算器工作区域的位置和大小.

WinGetClientPos &X, &Y, &W, &H, "Calculator"
MsgBox "Calculator's client area is at " X "," Y " and its size is " W "x" H

获取并报告活动窗口工作区域的位置.

WinGetClientPos &X, &Y,,, "A"
MsgBox "The active window's client area is at " X "," Y

如果记事本存在, 检索并报告其工作区域的位置.

if WinExist("Untitled - Notepad")
{
    WinGetClientPos &Xpos, &Ypos ; 使用由 WinExist 找到的窗口.
    MsgBox "Notepad's client area is at " Xpos "," Ypos
}