跳到主要内容

FilterWindowPos 根据窗口坐标筛选窗口句柄

🎯功能

根据窗口坐标筛选窗口句柄。这个函数可对使用本插件中的 EnumWindowA 函数或 EnumWindowT 函数的返回值进一步处理,根据窗口大小筛选出需要的窗口据句柄。

📜语法

HwndArray = Plugin.WndEx7_71.FilterWindowPos(窗口句柄数组, 窗口句柄, x, y, 模式)

📥参数

参数数据类型解释
窗口句柄数组长整型数数组窗口句柄的数组,可以通过本插件中的 EnumWindowA 函数或 EnumWindowT 函数获得。
窗口句柄长整型数要筛选的所有窗口的父窗口或者祖先窗口的窗口句柄,取0时用屏幕坐标筛选窗口句柄。
x长整型数参数2窗口句柄的窗口客户区横坐标,参数2窗口句柄0时为屏幕横坐标。
y长整型数参数2窗口句柄的窗口客户区纵坐标,参数2窗口句柄0时为屏幕纵坐标。
模式长整型数0时,筛选的是参数3x和参数4y的坐标在窗口区域内的窗口句柄;取1时,筛选的是参数3x和参数4y的坐标是窗口左上角的窗口句柄。

📤返回

长整型数数组。返回符合条件的窗口句柄数组,无符合条件的窗口句柄和失败时返回的是大小为0的一维数组。

💡示例

//获得所有顶层窗口的窗口句柄
HwndArray = Plugin.WndEx7_71.EnumWindowA(0, 0, 0, 0)
//筛选窗口区域包含屏幕坐标(150,180)的窗口句柄
HwndArray = Plugin.WndEx7_71.FilterWindowPos(HwndArray, 0, 150, 180, 0)
n = UBound(HwndArray)
If n=-1 Then
MsgBox "窗口未找到", 4096
Else
MsgBox "找到窗口" & CStr(n+1) & "个,窗口句柄如下:" & vbCrLf & Join(HwndArray, ","), 4096
End If

📘备注