VB6擷取IE8的地址欄的URL資訊

來源:互聯網
上載者:User

標籤:blog   http   使用   2014   問題   cti   

這是個老梗了,也沒什麼技術含量。因為自從接觸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在啟動並執行情況下執行的(當然你可以改寫)。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.