利用VB實現對IE的調用與控制

時間(jian):2022-11-17 10:43:00

導語(yu):利用VB實現對IE的調(diao)用與(yu)控制一文(wen)來源(yuan)于網(wang)友(you)上傳,不代表本站(zhan)觀點(dian),若需要(yao)原創文(wen)章可咨詢客服老師,歡(huan)迎參考。

利用VB實現對IE的調用與控制

隨著網絡應用的不斷擴展,采用HTML語言編寫的文檔越來越多,如何在vb程序中實現對HTML文(wen)檔的(de)瀏(liu)覽是一個(ge)需要解決的(de)問題。本文(wen)以一個(ge)實(shi)例(li)說明(ming)了(le)在VB中調(diao)用和(he)控制InternetExplorer的(de)方(fang)法。

一、編程準備

VB通過OLE自動化技術(shu)創(chuang)建和控制(zhi)InternetExplorer對(dui)象的(de)實例,因此,在新建一個工程后需(xu)要(yao)加入MicrosoftInternet控制(zhi)的(de)參考,方(fang)法是打開VisualBasic的(de)Project下拉(la)菜單(dan)中的(de)Reference…選項,單(dan)擊Browse…按鈕,在Windows的(de)system目錄下找到SHDOCVW.DLL并(bing)選中它,它是InternetExplorer的(de)類庫。

二、實現方法

在窗體form1中添加表1所示的控件。控件類型(xing)控件名稱控件內容

LabelLable1地址(zhi):

TextText1(空)

CommandcmdView瀏覽

CommandcmdForward向(xiang)前

CommandcmdBackward向后

CommandcmdCloseView關閉瀏覽窗口

CommandcmdExit退出

對上述窗體添加如下代碼即可實現對InternetExplorer的調用控制

DimWithEventsieViewAsInternetExplorer

''''在通用模塊中定義InternetExplorer對(dui)象(xiang)

PrivateSubForm_Load()

cmdForward.Visible=False

cmdBackward.Visible=False

cmdCloseView.Visible=False

''''窗體調(diao)入(ru)時隱藏(zang)InternetExplorer控制按鈕(niu)

EndSub

PrivateSubcmdView_Click()

DimtxtAddressAsString

OnErrorResumeNext''''設(she)置錯誤(wu)陷阱

SetieView=GetObject("","InternetExplorer.Application")

ieView.Visible=True

''''創建InternetExplorer對(dui)象的一個實例(li),并(bing)設(she)為可見

txtAddress=Trim(Text1.Text)

ieView.NavigatetxtAddress,navNoReadFromCache

''''按(an)text1控件的內容(rong)進行瀏覽

cmdView.Enabled=False

cmdExit.Enabled=False

cmdForward.Visible=True

cmdBackward.Visible=True

cmdCloseView.Visible=True

''''使瀏覽、退出命令鈕無效(xiao),使IE控制(zhi)命令鈕可見

EndSub

PrivateSubcmdForward_Click()

OnErrorResumeNext''''設置錯誤(wu)陷(xian)阱

ieView.GoForward

EndSub

PrivateSubcmdBackward_Click()

OnErrorResumeNext''''設置錯誤陷(xian)阱

ieView.GoBack

EndSub

PrivateSubcmdCloseView_Click()

OnErrorResumeNext''''設置錯誤(wu)陷(xian)阱

ieView.Quit

EndSub

PrivateSubieView_OnQuit()

SetieView=Nothing

''''消除ieView對(dui)象(xiang)

cmdForward.Visible=False

cmdBackward.Visible=False

cmdCloseView.Visible=False

cmdView.Enabled=True

cmdExit.Enabled=True

''''恢(hui)復初始按鈕(niu)狀態

EndSub

PrivateSubcmdExit_Click()

End

EndSub

程序啟(qi)動后"向(xiang)(xiang)前"、"向(xiang)(xiang)后"、"關閉(bi)瀏(liu)(liu)覽(lan)窗(chuang)(chuang)(chuang)口(kou)"等命令鈕(niu)不可(ke)見,在文本(ben)框內輸入相應(ying)的URL地址(zhi),單(dan)擊"瀏(liu)(liu)覽(lan)"按鈕(niu)即(ji)可(ke)調入InternetExplorer進行瀏(liu)(liu)覽(lan),此時,"向(xiang)(xiang)前"、"向(xiang)(xiang)后"、"關閉(bi)瀏(liu)(liu)覽(lan)窗(chuang)(chuang)(chuang)口(kou)"命令鈕(niu)轉為可(ke)見,從(cong)而實現對(dui)瀏(liu)(liu)覽(lan)器的控制,單(dan)擊"關閉(bi)瀏(liu)(liu)覽(lan)窗(chuang)(chuang)(chuang)口(kou)"命令按鈕(niu)可(ke)關閉(bi)當前打開的InternetExplorer窗(chuang)(chuang)(chuang)口(kou),此時窗(chuang)(chuang)(chuang)口(kou)又還(huan)原為初(chu)始模樣(yang),可(ke)再次輸入新(xin)的地址(zhi)進行瀏(liu)(liu)覽(lan)。

三、注意問題

1.必須在最上層通用(yong)模塊中(zhong)定義(yi)InternetExplorer對(dui)象(xiang),并(bing)且(qie)將(jiang)其定義(yi)為WithEvents類型以便響應由(you)ActiveX組(zu)件觸發的事件;

2.瀏覽時需用(yong)下(xia)述(shu)語句創建(jian)InternetExplorer對象實(shi)例,并(bing)設(she)為可見(jian):

SetieView=GetObject("","InternetExplorer.Application")

ieView.Visible=True

退出時須消除該對象(xiang)以釋放(fang)內存(cun),即

SetieView=Nothing

否則會因大量占用系統資源導致系統不穩定。

3.調用和控制InternetExplorer過(guo)程中會(hui)產(chan)生(sheng)各種錯誤,如在(zai)瀏覽器歷史記錄為空(kong)時,執(zhi)行"向前(qian)"、"向后(hou)"操作(zuo)就會(hui)產(chan)生(sheng)OlE自(zi)動化錯誤,必須在(zai)"瀏覽"、"向前(qian)"、"向后(hou)"、"關閉瀏覽窗口"等命令按鈕相應程序(xu)模塊開(kai)始處(chu)加入錯誤捕獲(huo)語句(ju):

OnErrorResumeNext

以檢測和處(chu)理(li)類似錯誤,上(shang)述程(cheng)序(xu)在Windows98、VB5.0環境(jing)下調(diao)試通過。