“VB”里面怎么用简单的办法枚举父窗口下所有的子窗口句柄

“VB”里面怎么用简单的办法枚举父窗口下所有的子窗口句柄,第1张

Private Sub Command1_Click()

Dim h&

Do

h = FindWindowEx(MehWnd, h, vbNullString, vbNullString)

If h <> 0 Then

List1AddItem h

End If

Loop Until h = 0

End Sub

声明:Declare Function GetForegroundWindow Lib "user32" () As Integer

句柄=GetForegroundWindow()

这个是获得活动窗口句柄

API:

GetForegroundWindow 可以获取到有焦点的顶层窗口。

获取有焦点的子窗口只能用GetFocus,但是如果当前顶层窗口属于其他线程,GetFocus将返回NULL。没有好的办法解决,除非AttachThreadInput或者用钩子(HOOK)。

获取句柄不一定要用 FindWindow ,还可以枚举:

Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Const GW_HWNDFIRST = 0

Private Const GW_HWNDNEXT = 2

Private Sub Command1_Click()

Dim lngHwnd As Long, ret As Long

Dim s As String 255

Dim sName As String

lngHwnd = GetWindow(Mehwnd, GW_HWNDFIRST)

Do While lngHwnd

ret = GetWindowText(lngHwnd, s, 255)

sName = Blank(s)

If InStr(sName, "记事本") <> 0 Then '这里“记事本”替换成程序标题相同的部分

'这里写 将句柄加入数组的相关代码

End If

lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)

Loop

End Sub

Public Function Blank(ByVal szString As String) As String

Dim l As Integer

l = InStr(szString, Chr(0))

If l > 0 Then

Blank = Left(szString, l - 1)

Else

Blank = szString

End If

End Function

以上就是关于“VB”里面怎么用简单的办法枚举父窗口下所有的子窗口句柄全部的内容,包括:“VB”里面怎么用简单的办法枚举父窗口下所有的子窗口句柄、vb中如何获得一个窗口的句柄、VB获取窗口下,鼠标光标位置所在的控件句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9650796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存