隨著網絡應用的不斷擴展,采用HTML語言編寫的文檔越來越多,如何在VB程序中實現對HTML文檔的浏覽是一個需要解決的問題。本文以一個實例說明了在VB中調用和控制Internet Explorer的方法。
一、編程准備
VB通過OLE自動化技術創建和控制Internet Explorer對象的實例,因此,在新建一個工程後需要加入Microsoft Internet 控制的參考,方法是打開Visual Basic 的Project下拉菜單中的Reference…選項,單擊Browse…按鈕,在Windows的system目錄下找到SHDOCVW.DLL並選中它,它是Internet Explorer的類庫。
二、實現方法
在窗體form1中添加表1所示的控件。 控件類型 控件名稱 控件內容 Label Lable1 地址: Text Text1 (空) Command cmdView 浏覽 Command cmdForward 向前 Command cmdBackward 向後 Command cmdCloseView 關閉浏覽窗口 Command cmdExit 退出
對上述窗體添加如下代碼即可實現對Internet Explorer的調用與控制,
Dim WithEvents ieView As InternetExplorer
'在通用模塊中定義Internet Explorer對象
Private Sub Form_Load()
cmdForward.Visible = False
cmdBackward.Visible = False
cmdCloseView.Visible = False
'窗體調入時隱藏Internet Explorer控制按鈕
End Sub
Private Sub cmdView_Click()
Dim txtAddress As String
On Error Resume Next '設置錯誤陷阱
Set ieView = GetObject("", "InternetExplorer.Application")
ieView.Visible = True
'創建Internet Explorer對象的一個實例,並設為可見
txtAddress = Trim(Text1.Text)
ieView.Navigate txtAddress, navNoReadFromCache
'按text1控件的內容進行浏覽
cmdView.Enabled = False
cmdExit.Enabled = False
cmdForward.Visible = True
cmdBackward.Visible = True
cmdCloseView.Visible = True
'使浏覽、退出命令鈕無效,使IE控制命令鈕可見
End Sub
Private Sub cmdForward_Click()
On Error Resume Next '設置錯誤陷阱
ieView.GoForward
End Sub
Private Sub cmdBackward_Click()
On Error Resume Next '設置錯誤陷阱
ieView.GoBack
End Sub
Private Sub cmdCloseView_Click()
On Error Resume Next '設置錯誤陷阱
ieView.Quit
End Sub
Private Sub ieView_OnQuit()
Set ieView = Nothing
'消除ieView對象
cmdForward.Visible = False
cmdBackward.Visible = False
cmdCloseView.Visible = False
cmdView.Enabled = True
cmdExit.Enabled = True
'恢復初始按鈕狀態
End Sub
Private Sub cmdExit_Click()
End
End Sub
程序啟動後"向前"、"向後"、"關閉浏覽窗口"等命令鈕不可見,在文本框內輸入相應的URL地址,單擊"浏覽"按鈕即可調入Internet Explorer進行浏覽,此時,"向前"、"向後"、"關閉浏覽窗口"命令鈕轉為可見,從而實現對浏覽器的控制,單擊"關閉浏覽窗口"命令按鈕可關閉當前打開的Internet Explorer窗口,此時窗口又還原為初始模樣,可再次輸入新的地址進行浏覽。
三、注意問題
1. 必須在最上層通用模塊中定義Internet Explorer對象,並且將其定義為WithEvents類型以便響應由Active X組件觸發的事件;
2. 浏覽時需用下述語句創建Internet Explorer對象實例,並設為可見:
Set ieView = GetObject("", "InternetExplorer.Application")
ieView.Visible = True
退出時須消除該對象以釋放內存,即
Set ieView = Nothing
否則會因大量占用系統資源導致系統不穩定。
3. 調用和控制Internet Explorer過程中會產生各種錯誤,如在浏覽器歷史記錄為空時,執行"向前"、"向後"操作就會產生OlE自動化錯誤,必須在"浏覽"、"向前"、"向後"、"關閉浏覽窗口"等命令按鈕相應程序模塊開始處加入錯誤捕獲語句:
On Error Resume Next
以檢測和處理類似錯誤,上述程序在Windows98、VB 5.0環境下調試通過。