zoukankan      html  css  js  c++  java
  • 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在运行的情况下执行的(当然你可以改写)。

  • 相关阅读:
    botzone Tetris2
    NOIP2017游记
    城乡联谊胡策会糊厕R3
    SRM 20
    AtCoder Regular Contest 082
    AtCoder Grand Contest 019
    复数模版
    SRM13
    NOI2017&&codeM2017游记
    java多线程编程
  • 原文地址:https://www.cnblogs.com/lichmama/p/3822465.html
Copyright © 2011-2022 走看看