VB 取得IE地址栏的地址(2)
'判断是否为 IE 浏览器窗口
If InStr(title, " - Netscape") Or InStr(title, " - Microsoft Internet Explorer") Or InStr(title, "Offline Explorer") Then
Call GetZiWin(app_hwnd)
End If
EnumProc = 1
End Function
'遍查子窗口
Public Function GetZiWin(window_hwnd As Long) As String
Dim buf As String
Dim buflen As Long
Dim child_hwnd As Long
Dim children() As Long
Dim num_children As Integer
Dim i As Integer
buflen = 256
buf = Space$(buflen - 1)
buflen = GetClassName(window_hwnd, buf, buflen)
buf = Left$(buf, buflen) '取得子窗口的类名
If Right(buf, 4) = "Edit" Then '判断是否为地址栏子窗口
GetZiWin = GetWinText(window_hwnd)
Exit Function
End If
num_children = 0
child_hwnd = GetWindow(window_hwnd, GW_CHILD) '取得第 1 个子窗口的句柄
Do While child_hwnd <> 0 '如果有子窗口
num_children = num_children + 1
ReDim Preserve children(1 To num_children)
children(num_children) = child_hwnd
child_hwnd = GetWindow(child_hwnd, GW_HWNDNEXT) '取得下一个兄弟窗口的句柄
Loop
For i = 1 To num_children
Call GetZiWin(children(i))
Next i
End Function
Public Function GetWinText(window_hwnd As Long) As String '取得子窗口的值
Dim txtlen As Long
Dim txt As String
'通过 SendMessage 发送 WM_GETTEXT 取得 IE 地址栏的值
GetWinText = ""
If window_hwnd = 0 Then Exit Function
txtlen = SendMessage(window_hwnd, WM_GETTEXTLENGTH, 0, 0)
If txtlen = 0 Then Exit Function
txtlen = txtlen + 1
txt = Space$(txtlen)
txtlen = SendMessage(window_hwnd, WM_GETTEXT, txtlen, ByVal txt)
GetWinText = Left$(txt, txtlen)
Form1.List1.AddItem GetWinText
End Function
相信大家看了上面的代码应该知道取得"任意窗口值"的原理,本程序在 VB6.0、Windows 98 下运行良好。
--------------------------------------------------
问如何取得当前运行的ie的标题(存放到字符串中)。
以及如何关闭当前的ie.
首先在工程中加入对Microsoft Internet Controls的引用
代码:
Dim WithEvents objIEMain As WebBrowser_V1
Dim objIE As Object
Dim dWinFolder As New ShellWindows
Dim objDoc As Object
For Each objIE In dWinFolder
List1.AddItem objIE.Document.Title
List2.AddItem objIE.LocationURL
Next
就可以在List1中列出所有IE文档的标题了。
下面是关闭其中一个窗口的代码:
If InStr(objIE.Document.Title, "Apple") Then
objIE.Quit
End If
- 上一篇:VB拦截关机或注销信息
- 下一篇:使用VB在WIN2000下截获IP数据包