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