VB6获取IE8的地址栏的URL信息

这是个老梗了,也没什么技术含量。因为自从接触Linux之后,Windows上我所知道的那一点api基本上都忘光了。所以这样的博文可以当做是备忘,说不定有天还能用的到。

Windows上想要获取浏览器的地址栏信息,基本思路是枚举浏览器的子窗体,然后获取hwnd(handle of window),最后使用SendMessage & WM_GETTEXT(或者 GetWindowText大体上没什么区别)。好,基于这样的事实,我们来做个简单的实现。

1.获取IE窗口

这个很简单通过FindWindow就可以做到,前提是我们已经知道了IE8的ClassName(窗口的类名称)是“IEFrame”。这样的话,用FindWindow这样的函数,就可以直接获取。当然,如果你是像获取Chrome这类浏览器,请先在Spy++中抓取窗口看看类名称。

 

2.通过枚举得到地址栏子窗体

使用Spy++可以很轻松地得到IE8的子窗体分布情况,请看下图:

下面两个我就不列出来了(因为编辑这个太累了),我们需要获取的是这样一个路径:IEFrame->WorkerW->RebarWindow32->Address Band Root->Edit。

到此为止基本上问题分析就已经结束了,直接上代码吧(叙述真累人)。

 

3.代码

Private Function GetIE8Url() As String
    Dim hwnd As Long 'default 0, which eq top-hwnd.
    Dim lpsz1
    Dim url As String * 2048
    Dim length As Long
     
    For Each lpsz1 In Array("IEFrame", _
        "WorkerW", _
        "ReBarWindow32", _
        "Address Band Root", _
        "Edit")
        hwnd = FindWindowEx(hwnd, 0&, lpsz1, vbNullString)
    Next
    length = SendMessage(hwnd, WM_GETTEXT, 2048&, ByVal url)
    GetIE8Url = Left(url, length)
End Function

 

如上所示,获取IE8地址栏URL信息的函数就实现了。我没有写函数声明,和容错处理,因为这样的函数是在确定IE8在运行的情况下执行的(当然你可以改写)。

 

posted @ 2014-07-03 15:18  lichmama  阅读(1170)  评论(0编辑  收藏  举报