EnumWindowA 获得符合条件的所有窗口句柄
🎯功能
获得符合条件的所有窗口的窗口句柄。
📜语法
HwndArray = Plugin.WndEx7_71.EnumWindowA(父窗口句柄, 窗口标题, 窗口类名, 过滤条件)
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
父窗口句柄 | 长整型数 | 该参数不为0 时,获得该窗口的子窗口的窗口句柄。取0 时为获得顶层窗口的窗口句柄。参数4(过滤条件 )使用16384 时,该窗口句柄为所有者窗口句柄。 |
窗口标题 | 整数型 或 字符串 | 为搜索条件,取整型数0 时不过滤窗口标题。 |
窗口类名 | 整数型 或 字符串 | 为搜索条件,取整型数0 时不过滤窗口类名。 |
过滤条件 | 长整型数 | 取值可以是下面的一个或多个,不用时可取0。如果要同时使用多个值,可将多个值做或运算或者加法运算。 |
参数4(
过滤条件
)可取以下值过滤条件 值 | 说明 |
---|---|
1 | 标题通配符匹配,使用此值时,可以使用"?" 和"*" 进行模糊搜索窗口标题,"?" 代表一个任意字符,"*" 代表0个或者多个任意字符。 |
2 | 类名通配符匹配,和标题匹配类似。 |
4 | 仅下一级子窗口。父窗口句柄不为0时,如果使用此值,获得的是父窗口的所有下级子窗口;如果不使用此值,获得的是父窗口句柄的所有子窗口,包括子窗口的子窗口。 |
8 | 排除所有者窗口,如果使用此值,获得的窗口都无所有者窗口。 |
16 | 窗口必须可见,如果使用此值,获得的窗口都是可见窗口。 |
64 | 和取值8 时相反,不可与值8 同时使用。 |
128 | 和取值16 时相反,不可与值16 同时使用。 |
16384 | 获得的窗口的所有者窗口是参数1(父窗口句柄 )。 |
65536 | 使用另一种历遍方法,因为曾经遇到几个游戏用常用的历遍方法取不到它们的窗口句柄,用这个方法就没问题,但平常不推荐使用此历遍方法,它可能导致程序进入死循环。 |
📤返回
一维长整型数数组
,找到窗口时返回窗口句柄数组,未找到和失败时返回的是元素数量为0
的一维数组。实际返回值的类型由本插件中的 SetArrayResultType 函数的设置决定。
💡示例
RunApp "notepad.exe"
RunApp "notepad.exe"
RunApp "notepad.exe"
Delay 1000
HwndArray = Plugin.WndEx7_71.EnumWindowA(0,0,"Notepad",0)
n = UBound(HwndArray)
If n=-1 Then
MsgBox "记事本窗口未找到", 4096
Else
str = CStr(HwndArray(0))
i = 1
For n
str = str & "," & CStr(HwndArray(i))
i = i + 1
Next
MsgBox "找到记事本窗口" & CStr(n+1) & "个,窗口句柄如下:" & vbCrLf & str, 4096
End If
📘备注
无