VB操作IE浏览器
相信現(xiàn)在絕大多數(shù)計(jì)算機(jī)上使用的是IE瀏覽器。如何通過(guò)編程控制IE的操作呢,本文將一步步介紹如何通過(guò)VB???
調(diào)用IE的對(duì)象庫(kù)來(lái)對(duì)IE進(jìn)行控制。???
本文使用的編程工具是VB6英文企業(yè)版,瀏覽器是IE5,以下的代碼只能在IE4及以上版本下運(yùn)行。另外為了能深???
入了解程序代碼,最好能安裝MSDN。文中的所有對(duì)象、函數(shù)、事件在其中都可以查到。???
????
一、如何獲得Windows中所有打開(kāi)的瀏覽器窗口???
首先打開(kāi)VB,建立一個(gè)新工程,點(diǎn)擊菜單?? Projects?? |?? References?? 項(xiàng),在Available?? References?? 列表中選擇???
Microsoft?? Internet?? Controls項(xiàng)將Internet對(duì)象引用介入到工程中。添加一個(gè)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???
打開(kāi)幾個(gè)瀏覽器窗口,然后運(yùn)行程序,可以看到所有瀏覽窗口中的URL地址都在List1中列了出來(lái)。???
上面程序中的ShellWindows對(duì)象是描述當(dāng)前所有打開(kāi)的“瀏覽窗口”對(duì)象集合的對(duì)象,利用For...Each語(yǔ)句可以???
獲得其中所有的瀏覽窗口對(duì)象。這是一個(gè)WebBrowser對(duì)象,在MSDN索引中通過(guò)“WebBrowser?? Object”中可以找到該???
對(duì)象的詳細(xì)介紹???
在ShellWindows中的瀏覽窗口對(duì)象不僅包含IE,還包含Explore窗口(向資源管理器或者“我的電腦”窗口就是???
Explore)。只不過(guò)它們的宿主程序一個(gè)是IEXPLORE.EXE,一個(gè)是EXPLORE.EXE。所以對(duì)每一個(gè)對(duì)象首先根據(jù)其FulName???
屬性來(lái)判斷窗口是IE瀏覽器,如果是,則將該窗口的URL地址列出來(lái)。???
通過(guò)WebBrowser對(duì)象可以獲得和設(shè)置瀏覽器窗口中的很多屬性,例如窗口大小、工具欄、狀態(tài)欄狀態(tài)以及控制???
窗口的瀏覽等,大家通過(guò)MSDN都可以查到。???
????
二、如何得到每一個(gè)瀏覽窗口的內(nèi)容???
在上面程序的Form1中再添加一個(gè)TextBox控件,將MultiLine屬性設(shè)置為T(mén)rue,然后在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???
運(yùn)行程序,點(diǎn)擊ListBox中的一個(gè)列表,所對(duì)應(yīng)的瀏覽器窗口中的文本內(nèi)容就會(huì)顯示在TextBox中。???
在上面的程序中,首先根據(jù)ListBox中選擇的URL獲得Webrowser對(duì)象,然后根據(jù)Document屬性獲得文檔對(duì)象。我們知道???
一個(gè)頁(yè)面中包括HEAD、TITLE、BODY部分,頁(yè)面中還可能包括Applet、Script、連接、表單等,這些在文檔中都是一個(gè)對(duì)象???
在程序中就是循環(huán)文檔對(duì)象下的所有對(duì)象,如果對(duì)象的名稱是“BODY”,說(shuō)明對(duì)象代表HTML文檔的正文部分,那么訪問(wèn)對(duì)象???
的innerText屬性獲得文檔正文。關(guān)于Document對(duì)象更詳細(xì)的信息,大家可以參考MSDN中Webbrowser?? object幫助中的???
Document屬性連接。???
????
????
三、響應(yīng)IE事件???
上面的部分只是介紹了如何訪問(wèn)Webbrowser對(duì)象的屬性,下面介紹如何監(jiān)控IE事件。???
在Form1中再添加一個(gè)CommandButton。在代碼窗口的?? [Gengeral]-[Declaration]添加下面的定義:???
Dim?? WithEvents?? eventIE?? As?? WebBrowser_V1???
這樣就在Form1中新添加了一個(gè)對(duì)象,然后在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???
運(yùn)行程序,在ListBox中選擇一個(gè)URL后點(diǎn)擊Command1,然后轉(zhuǎn)到與所選項(xiàng)向?qū)?yīng)的瀏覽窗口輸入網(wǎng)站地址進(jìn)行瀏覽,可以???
看到所瀏覽過(guò)的站點(diǎn)地址在TextBox中一一列出。???
上面的程序?qū)崿F(xiàn)起來(lái)也很簡(jiǎn)單。首先定義一個(gè)可響應(yīng)事件的Webbrowser對(duì)象,然后將它與在ListBox中選擇的Webbrowser對(duì)???
象聯(lián)系起來(lái),當(dāng)瀏覽器發(fā)生變化時(shí),eventIE對(duì)象就能響應(yīng)相應(yīng)的事件。???
根據(jù)IE版本的不同,Webbrowser對(duì)象也不同,作者的瀏覽器是IE5.0,在上面將eventIE定義為WebBrowser_V1運(yùn)行通過(guò),如???
果你的瀏覽器版本為4.0的話,可能在執(zhí)行?? Set?? eventIE?? =?? objIE?? 時(shí),可能產(chǎn)生?? Type?? mistake?? 錯(cuò)誤,這時(shí)你可以嘗試將???
eventIE定義為:Dim?? WithEvents?? eventIE?? As?? WebBrowser
?
轉(zhuǎn)載于:https://www.cnblogs.com/huhewei/p/6352139.html
總結(jié)
- 上一篇: 山西大学生计算机设计大赛,2017中国大
- 下一篇: 2017年html5行业报告,云适配发布