用GetWindow枚举子窗口句柄的问题

一如既往哈 一如既往哈 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位大侠,近日突然发现 用GetWindow枚举子窗口句柄出问题了,得到的句柄值都很小,与实际的不相符,这是怎么回事?


附上我的vb代码:

Option Explicit
Public Const GW_CHILD = 5
Public Const GW_HWNDNEXT = 2
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Integer) As Integer
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
'枚举某一个窗口的子窗口
Public Sub ListAllChildWindow(Optional bParentHwnd As Long)
On Error Resume Next
Dim Str As String * 256 '定义str用来存储子窗体类名
Dim hd As Long, w2 As String
If bParentHwnd = 0 Then bParentHwnd = GetDesktopWindow '桌面hwnd
hd = GetWindow(bParentHwnd, GW_CHILD) '获取Form的第一个子窗体句柄hd
Do While hd <> 0 '如果子窗体查找完毕hd返回0,所以用hd<>0作为继续查找条件
GetClassName hd, Str, 256 '获得子窗体类名存储在str里
w2 = Left$(Str, InStr(Str, Chr$(0)) - 1)
Debug.Print w2 & "----" & hd
hd = GetWindow(hd, GW_HWNDNEXT) '获取下一个同级子窗体句柄hd
Loop
End Sub
Sub Test()
ListAllChildWindow Me.Hwnd
End Sub
’下面是得到的结果:
'ThunderTextBox ----3996(正确的hwnd: 23728126)
'ThunderTextBox ----4094(正确的hwnd: 8195996)
'ThunderCommandButton ----3862


期盼大侠们指点迷津。。。。。。。。。。。。。。
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
一如既往哈
API 1,488 成员 23,270 内容