VB操作IE瀏覽器


相信現在絕大多數計算機上使用的是IE瀏覽器。如何通過編程控制IE的操作呢,本文將一步步介紹如何通過VB   
調用IE的對象庫來對IE進行控制。   
本文使用的編程工具是VB6英文企業版,瀏覽器是IE5,以下的代碼只能在IE4及以上版本下運行。另外為了能深   
入了解程序代碼,最好能安裝MSDN。文中的所有對象、函數、事件在其中都可以查到。   
    
一、如何獲得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都可以查到。   
    
二、如何得到每一個瀏覽窗口的內容   
在上面程序的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屬性連接。   
    
    
三、響應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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM