假设打开了若干个IE窗口,如何分别获取这些窗口的句柄(VB或VB.net)?

IE窗口名字不固定。先给20分,要是满意的话加到100分。... IE窗口名字不固定。

先给20分,要是满意的话加到100分。
展开
 我来答
zhaobuping
2011-04-14 · TA获得超过340个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:268万
展开全部
vb6 code
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
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 Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Const GW_HWNDNEXT = 2
Private Const GW_CHILD = 5
Private Const GW_HWNDFIRST = 0

Private Sub Command1_Click()
Dim hwnd As Long
Dim l As Long
Dim s As String
hwnd = GetForegroundWindow()
While hwnd <> 0
l = GetWindowTextLength(hwnd)
s = String(l + 1, Chr(0))
GetWindowText hwnd, s, l + 1
If InStr(s, "Microsoft Internet Explorer") <> 0 Then
List1.AddItem s
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Wend
End Sub
Private Sub FillChild(hWndParent As Long)
Dim hWndChild As Long
Dim szCaption As String
Dim buffer As String
Dim i As Long

hWndChild = GetWindow(hWndParent, GW_CHILD)
If (hWndChild = 0) Then Exit Sub
hWndChild = GetWindow(hWndChild, GW_HWNDFIRST)
If hWndChild = 0 Then Exit Sub

While (hWndChild <> 0)
szCaption = String$(255, 0)
GetClassName hWndChild, szCaption, 250
szCaption = Left$(szCaption, InStr(szCaption, String$(1, 0)) - 1)
buffer = CStr(hWndChild) & "--" & szCaption
i = GetWindowTextLength(hWndChild)
szCaption = String$(255, 0)
GetWindowText hWndChild, szCaption, 250
szCaption = Left$(szCaption, i)
buffer = buffer & "--" & szCaption

List2.AddItem buffer
FillChild hWndChild
hWndChild = GetWindow(hWndChild, GW_HWNDNEXT)
Wend
End Sub

Private Sub GetChildWindow(hwnd As Long)
Dim szCaption As String
Dim buffer As String
Dim i As Long
szCaption = String$(255, 0)
GetClassName hwnd, szCaption, 250
szCaption = Left$(szCaption, InStr(szCaption, String$(1, 0)) - 1)
buffer = CStr(hwnd)
buffer = buffer & "--" & szCaption
i = GetWindowTextLength(hwnd)
szCaption = String$(255, 0)
GetWindowText hwnd, szCaption, 250
szCaption = Left$(szCaption, i)
buffer = buffer & "--" & szCaption
List2.AddItem buffer
'FillChild hwnd
End Sub
Private Sub Command2_Click()
Dim j As Integer
Dim hwnd As Long
For j = 0 To List1.ListCount - 1
hwnd = FindWindow(vbNullString, List1.List(j))
GetChildWindow hwnd
Next j
End Sub
追问
按了command2之后,list2中会出现数字--什么什么的,如何就保留数字,而不显示数字后面的内容?
我知道了,不用回答了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式