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
📘备注
无