IE瀏覽器完全控制 ,相信現(xiàn)在絕大多數(shù)計算機上使用的是IE瀏覽器。如何通過編程控制IE的操作呢,本文將一步步介紹如何通過VB 調(diào)用IE的對象庫來對IE進行控制。
本文使用的編程工具是VB6英文企業(yè)版,瀏覽器是IE5,以下的代碼只能在IE4及以上版本下運行。另外為了能深
入了解程序代碼,最好能安裝MSDN。文中的所有對象、函數(shù)、事件在其中都可以查到。
一、如何獲得Windows中所有打開的瀏覽器窗口
首先打開VB,建立一個新工程,點擊菜單 Projects | References 項,在Available References 列表中選擇
Microsoft Internet Controls項將Internet對象引用介入到工程中。添加一個ListBox到Form1,然后在Form1中添
加如下代碼:
Dim dWinFolder As New ShellWindows
Private Sub Form_Load()
Dim objIE As Object
For Each objIE In dWinFolder
If InStr(1, objIE.FullName, “IEXPLORE.EXE”, vbTextCompare) <> 0 Then
List1.AddItem objIE.LocationURL
End If
Next
End Sub
打開幾個瀏覽器窗口,然后運行程序,可以看到所有瀏覽窗口中的URL地址都在List1中列了出來。
上面程序中的ShellWindows對象是描述當前所有打開的“瀏覽窗口”對象集合的對象,利用For…Each語句可以
獲得其中所有的瀏覽窗口對象。這是一個WebBrowser對象,在MSDN索引中通過“WebBrowser Object”中可以找到該
對象的詳細介紹
在ShellWindows中的瀏覽窗口對象不僅包含IE,還包含Explore窗口(向資源管理器或者“我的電腦”窗口就是
Explore)。只不過它們的宿主程序一個是IEXPLORE.EXE,一個是EXPLORE.EXE。所以對每一個對象首先根據(jù)其FulName
屬性來判斷窗口是IE瀏覽器,如果是,則將該窗口的URL地址列出來。
通過WebBrowser對象可以獲得和設置瀏覽器窗口中的很多屬性,例如窗口大小、工具欄、狀態(tài)欄狀態(tài)以及控制
窗口的瀏覽等,大家通過MSDN都可以查到。
二、如何得到每一個瀏覽窗口的內(nèi)容
在上面程序的Form1中再添加一個TextBox控件,將MultiLine屬性設置為True,然后在List1的Click事件中添加如
下代碼:
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = List1.List(List1.ListIndex) Then
Set objDoc = objIE.Document
For i = 1 To objDoc.All.length - 1
If objDoc.All(i).tagname = “BODY” Then
Text1.Text = objDoc.All(i).innerText
End If
Next
Exit For
End If
Next
運行程序,點擊ListBox中的一個列表,所對應的瀏覽器窗口中的文本內(nèi)容就會顯示在TextBox中。
在上面的程序中,首先根據(jù)ListBox中選擇的URL獲得Webrowser對象,然后根據(jù)Document屬性獲得文檔對象。我們知道
一個頁面中包括HEAD、TITLE、BODY部分,頁面中還可能包括Applet、Script、連接、表單等,這些在文檔中都是一個對象
在程序中就是循環(huán)文檔對象下的所有對象,如果對象的名稱是“BODY”,說明對象代表HTML文檔的正文部分,那么訪問對象
的innerText屬性獲得文檔正文。關于Document對象更詳細的信息,大家可以參考MSDN中Webbrowser object幫助中的
Document屬性連接。
三、響應IE事件
上面的部分只是介紹了如何訪問Webbrowser對象的屬性,下面介紹如何監(jiān)控IE事件。
在Form1中再添加一個CommandButton。在代碼窗口的 [Gengeral]-[Declaration]添加下面的定義:
Dim WithEvents eventIE As WebBrowser_V1
這樣就在Form1中新添加了一個對象,然后在Command1的Click事件中添加如下代碼:
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = List1.List(List1.ListIndex) Then
Set eventIE = objIE
Command1.Enabled = False
Text1.Text = “”
Exit For
End If
Next
在eventIE的NavigateComplete事件中添加如下代碼:
Text1.Text = Text1.Text + Chr(13) + Chr(10) + URL
在Form的UnLoad事件中添加下面一句代碼:
Set dWinFolder = Nothing
運行程序,在ListBox中選擇一個URL后點擊Command1,然后轉到與所選項向?qū)臑g覽窗口輸入網(wǎng)站地址進行瀏覽,可以
看到所瀏覽過的站點地址在TextBox中一一列出。
上面的程序?qū)崿F(xiàn)起來也很簡單。首先定義一個可響應事件的Webbrowser對象,然后將它與在ListBox中選擇的Webbrowser對
象聯(lián)系起來,當瀏覽器發(fā)生變化時,eventIE對象就能響應相應的事件。
根據(jù)IE版本的不同,Webbrowser對象也不同,作者的瀏覽器是IE5.0,在上面將eventIE定義為WebBrowser_V1運行通過,如
果你的瀏覽器版本為4.0的話,可能在執(zhí)行 Set eventIE = objIE 時,可能產(chǎn)生 Type mistake 錯誤,這時你可以嘗試將
eventIE定義為:Dim WithEvents eventIE As WebBrowser
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。