相信如今絕大多數計算機上使用的是IE瀏覽器。如何經過編程控制IE的操做呢,本文將一步步介紹如何經過VB
調用IE的對象庫來對IE進行控制。
本文使用的編程工具是VB6英文企業版,瀏覽器是IE5,如下的代碼只能在IE4及以上版本下運行。另外爲了能深
入瞭解程序代碼,最好能安裝MSDN。文中的全部對象、函數、事件在其中均可以查到。
1、如何得到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。因此對每個對象首先根據其FulName
屬性來判斷窗口是IE瀏覽器,若是是,則將該窗口的URL地址列出來。
經過WebBrowser對象能夠得到和設置瀏覽器窗口中的不少屬性,例如窗口大小、工具欄、狀態欄狀態以及控制
窗口的瀏覽等,你們經過MSDN均可以查到。
2、如何獲得每個瀏覽窗口的內容
在上面程序的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中的一個列表,所對應的瀏覽器窗口中的文本內容就會顯示在TextBox中。
在上面的程序中,首先根據ListBox中選擇的URL得到Webrowser對象,而後根據Document屬性得到文檔對象。咱們知道
一個頁面中包括HEAD、TITLE、BODY部分,頁面中還可能包括Applet、Script、鏈接、表單等,這些在文檔中都是一個對象
在程序中就是循環文檔對象下的全部對象,若是對象的名稱是「BODY」,說明對象表明HTML文檔的正文部分,那麼訪問對象
的innerText屬性得到文檔正文。關於Document對象更詳細的信息,你們能夠參考MSDN中Webbrowser object幫助中的
Document屬性鏈接。
3、響應IE事件
上面的部分只是介紹瞭如何訪問Webbrowser對象的屬性,下面介紹如何監控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,而後轉到與所選項向對應的瀏覽窗口輸入網站地址進行瀏覽,能夠
看到所瀏覽過的站點地址在TextBox中一一列出。
上面的程序實現起來也很簡單。首先定義一個可響應事件的Webbrowser對象,而後將它與在ListBox中選擇的Webbrowser對
象聯繫起來,當瀏覽器發生變化時,eventIE對象就能響應相應的事件。
根據IE版本的不一樣,Webbrowser對象也不一樣,做者的瀏覽器是IE5.0,在上面將eventIE定義爲WebBrowser_V1運行經過,如
果你的瀏覽器版本爲4.0的話,可能在執行 Set eventIE = objIE 時,可能產生 Type mistake 錯誤,這時你能夠嘗試將
eventIE定義爲:Dim WithEvents eventIE As WebBrowser編程