龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

VB 取得IE地址栏的地址(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
判断是否为 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

 '判断是否为 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

精彩图集

赞助商链接