IE瀏覽器二次開發(fā)實用指南(doc63)_第1頁
IE瀏覽器二次開發(fā)實用指南(doc63)_第2頁
IE瀏覽器二次開發(fā)實用指南(doc63)_第3頁
IE瀏覽器二次開發(fā)實用指南(doc63)_第4頁
IE瀏覽器二次開發(fā)實用指南(doc63)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ie瀏覽器二次開發(fā)實用指南 ie(internet explorer)瀏覽器提供了功能強大的二次開發(fā)接口,很多下載軟件(網際快車和網絡螞蟻等)即利用了相應的接口,實現(xiàn)了在ie中的集成。開發(fā)者如能巧妙地利用這些接口,則完全可以充分發(fā)揮創(chuàng)造力,開發(fā)出形形色色的ie輔助軟件。 一、ie右鍵菜單的開發(fā) 對于ie的右鍵菜單,我們并不陌生,很多下載軟件都在右鍵菜單中新增了相應的菜單項。下面讓我們利用ie提供的接口實現(xiàn)ie右鍵菜單的二次開發(fā)。 (一)相關知識點 1.添加右鍵菜單 添加右鍵菜單的方法很簡單,在注冊表hkey_current_usersoftwaremicrosoftinternet explo

2、rermenuext項下建立一個新項,該項名稱即代表顯示在ie右鍵菜單中的菜單項標題,如安裝了網際快車或網絡螞蟻,那么在注冊表編輯器中即可發(fā)現(xiàn)相應鍵值。 2.設置執(zhí)行代碼 添加了菜單項后,我們必須為菜單項設置單擊后執(zhí)行的代碼。首先將新建注冊表項的默認值設置為一個url(uniform resource locator,統(tǒng)一資源定位器)地址,當用戶單擊該菜單項后,ie將調用該url所指向的腳本并執(zhí)行其中的代碼。我們分析相應鍵值即可發(fā)現(xiàn)網際快車和網絡螞蟻在單擊ie右鍵菜單相應項時訪問的文件。具體如下所述: (1)“download by netants”項對應訪問網絡螞蟻安裝目錄下的“naget.

3、htm”文件。 (2)“download &all by netants”項對應訪問網絡螞蟻安裝目錄下的“nagetall.htm”文件。 (3)“使用網際快車下載”項對應訪問網際快車安裝目錄下的“jc_link.htm”文件。 (4)“使用網際快車下載全部鏈接”項對應訪問網際快車安裝目錄下的“jc_all.htm”文件。 3.開發(fā)常用對象 在調用的目標腳本文件中,通過訪問ie提供的一些右鍵開發(fā)專用對象,即可訪問鏈接、圖片、表單域或選擇的文本等頁面對象。具體如下所述: (1)external對象:該對象允許程序處理由ie瀏覽器組件提供的附加對象。當其可用時,對象模型由ie瀏覽器的組件定義。通過

4、external對象,可訪問當前ie頁面的各個控件,是ie右鍵菜單開發(fā)的關鍵。 (2)links對象:該對象屬于document對象,用于返回html頁面所有超鏈接的集合,該對象的常用屬性和方法如下所述: length屬性:該屬性用于返回鏈接的數(shù)量。 href屬性:該屬性用于設置鏈接的目標。 innertext屬性:該屬性用于獲取包含在html標記中的文字。 item方法:該方法用于訪問指定的鏈接。 tags方法:該方法用于獲取html的標記名稱。 (3)images對象:該對象屬于document對象,用于返回html頁面所有的圖片集合,即包含在“img”標志中的圖片文件,該對象的常用屬性和

5、方法如下所述: src屬性:該屬性用于獲取圖片的地址。 alt屬性:該屬性用于獲取圖片的說明文字。 4.設置顯示條件 有時,右鍵菜單需要在特定條件下顯示,因此需在前述新建的注冊項下再建立一個dword類型鍵,鍵名為contexts,如未設置contexts項,則新建的ie右鍵菜單項會在單擊任何頁面對象時出現(xiàn)。 通過contexts項可設置菜單項在ie中右鍵單擊時出現(xiàn)的對象,該值的取值范圍如下表所示: 對象 值 對象 值 缺省 0x1 圖片 0x2 控件 0x4 表單域 0x8 選擇文本 0x10 錨點(超鏈接) 0x20 contexts項的值可為表1中的單個值或不同值的組合,如需要菜單項在用

6、戶單擊圖片或超級鏈接時出現(xiàn),可將其值設置為“dword:00000022”(即0x20+0x2的運算值)。 (二)程序實例 當瀏覽包含大量鏈接的頁面時,用戶常常希望同時打開這些鏈接,而ie瀏覽器并未提供類似“在新窗口中打開所有鏈接”的菜單項,只能逐一手工打開。 我們可以在ie右鍵菜單項中添加“在新窗口中打開所有鏈接”菜單項。單擊“在新窗口中打開所有鏈接”菜單項,將彈出一個顯示鏈接數(shù)的確認對話框,單擊“是”按鈕后將對每一個鏈接新建ie窗口進行瀏覽。 在該例程中我們需要使用: confirm方法:該方法用于顯示確認對話框,并可獲取用戶的選擇內容。 open方法:該方法用于新建ie窗體并打開指定的u

7、rl。 首先在注冊表hkey_current_usersoftwaremicrosoftinternet explorermenuext下建立新項,命名為“在新窗口中打開所有鏈接”,其默認值為對應的腳本文件。然后在該項中建立一個dword鍵“contexts”,值為0x35(即單擊頁面時顯示該菜單項)。 在新建項對應的腳本文件中輸入代碼: script language=vbscript sub displink() 獲取頁面全部鏈接 set links = external.menuarguments.document.links 定義存放鏈接的數(shù)組 redim params(links.l

8、ength*2) 在確認框中顯示鏈接數(shù)量 result=window.confirm(共有+cstr(links.length)+個鏈接,是否準備開新窗口打開?) 如確認,則新建ie窗口并打開所有鏈接 if result=-1 then for i = 0 to links.length-1 調用open方法打開新窗口 result=window.open(links(i).href) next end if end sub call displink() /script 重啟ie瀏覽器,訪問包含多個鏈接的網頁,單擊該菜單項即可實現(xiàn)前述效果。 二、ie右鍵菜單開發(fā)進階 雖然網際快車和網絡螞蟻在

9、ie右鍵菜單中添加了相應的菜單項,但學習了前述的右鍵菜單基本開發(fā)后,完全可自行動手對其進行ie右鍵菜單的擴展開發(fā),即結合腳本程序處理ie網頁后調用這兩個下載工具來實現(xiàn)各類特殊的下載功能,進一步增強ie右鍵菜單的功能。 (一)相關知識點 1.網際快車組件 (1)netscape對象:該對象用于啟動網絡快車,類名為“jetcar.netscape”。 (2)addurllist方法:批量添加下載地址。 (3)addurl:添加一個下載地址。 2.網絡螞蟻組件 (1)api對象:該對象用于啟動網絡螞蟻。類名為“netants.api”。 (2)addurllist方法:批量添加下載地址。 (3)ad

10、durl:添加一個下載地址。 3.添加下載地址的要點 網際快車和網絡螞蟻在批量添加下載地址時需注意,必需創(chuàng)建一個元素個數(shù)為下載鏈接數(shù)2倍加1的數(shù)組,然后數(shù)組的第一個元素需存放當前頁面地址,其他元素如為奇數(shù),則存放鏈接的網址,如為偶數(shù),則存放鏈接的說明文字。 (二)程序實例 網際快車和網絡螞蟻在下載全部鏈接時均無法批量下載以“img”標記方式直接嵌入網頁的圖片,僅能使用下載單個鏈接的方法逐一下載,效率大為降低。本實例通過自行編制腳本程序實現(xiàn)了ie右鍵菜單的擴展開發(fā),運行后對包含鏈接的網頁進行下載全部鏈接操作時,其下載列表中不僅添加所有的鏈接,還可添加所有的頁面圖片,網際快車的效果如圖1所示: 通

11、過分析網際快車和網絡螞蟻所使用的腳本文件代碼,可得出這兩個軟件無法下載網頁內嵌圖片的原因,具體如下所述: (1)腳本均未對網頁的圖片對象進行相關操作。 (2)腳本僅對鏈接(links)對象進行了操作。 按前述知識,添加下載所有內嵌圖片功能的步驟如下所述: (1)獲取網頁的圖像(images)對象。 (2)定義新的下載列表數(shù)組。 (3)遍歷圖像對象,按程序接口添加相關的網址和說明。 由于創(chuàng)建ie右鍵菜單項的步驟已經介紹,因此不做贅述,對應的腳本程序代碼如下所示: script language=vbscript on error resume next set jetcarcatch=creat

12、eobject(jetcar.netscape) if err0 then msgbox(flashget not properly installed!+ vbcrlf+please install flashget again) else set links = external.menuarguments.document.links 將頁面的所有圖片賦予imgs變量 set imgs = external.menuarguments.document.images 說明:按鏈接和圖片的數(shù)量進行計算,并重定義數(shù)組 redim params(links.length*2+imgs.leng

13、th*2) j=links.length-1 k=imgs.length-1 params(0)=external.menuarguments.document.url for i = 0 to j params(i*2+1)=links(i).href params(i*2+2)=links(i).innertext next for j = 0 to k 將奇數(shù)的數(shù)組元素賦值為圖片的目標網址,為flashget的程序接口要求 params(j*2+1+i*2)=imgs(j).src 將偶數(shù)的數(shù)組元素賦值為圖片的說明文字,為flashget的程序接口要求 params(j*2+2+i*2)

14、=imgs(j).alt next jetcarcatch.addurllist params end if /script 三、ie工具欄按鈕的開發(fā) 在安裝了網際快車、網絡螞蟻和金山系列軟件后,均會在ie工具欄或“工具”菜單中添加相應的按鈕和菜單項。下面讓我們利用ie提供的接口實現(xiàn)ie工具欄按鈕的二次開發(fā)。 (一)相關知識點 添加ie任務欄按鈕需對注冊表進行多步操作,因此建議讀者先備份注冊表。通過對已有ie任務欄按鈕的相應注冊表項進行分析,得出修改注冊表的基本步驟,具體如下所述: 1.創(chuàng)建guid 在注冊表hkey_current_usersoftwaremicrosoftinternet

15、explorerextensionscmdmapping下建立一個guid(globally unique identifier,全局唯一描述符)。 本例建立的dword值名稱是“fb5a1910-f110-11d2-bb9e-00c04f795683”,其值為“0000200c”(值由nextid鍵值決定)。 建立完畢,在同一主鍵下有一個重要的鍵值需修改,即nextid。建議在修改前記錄nextid值,在建立guid需將該值遞增1,如原nextid為“dword:00002009”,那么建立新guid后,nextid值應修改為“dword:000020a”(按十六進制計算)。 2.創(chuàng)建注冊表

16、項 在注冊表hkey_local_machinesoftwaremicrosoftinternet explorerextensions下添加一個新項,名稱為剛才建立的guid名稱。 以下介紹的鍵位置,如未指定,均用“test ie guid”來代表(hkey_local_machinesoftwaremicrosoftinternet explorerextensionstest ie guid”)。 3.設置按鈕圖標 在test ie guid下新建一個string類型值,名稱為“hoticon”,該值代表當按鈕獲取焦點時的圖標,一般包括圖標文件全路徑名和圖標索引,如“c:program

17、filesmessengermsmsgs.exe,302”,也可直接輸入圖標文件名。 在test ie guid下新建一個string類型值,名稱為“icon”,該值代表當按鈕失去焦點時的圖標,一般包括圖標文件全路徑名和圖標索引,也可直接輸入圖標文件名。 ie工具欄按鈕需2020和1616兩種尺寸的圖標,前者用于正常狀態(tài)顯示,后者用于全屏狀態(tài)顯示,因此上述hoticon和icon指向的圖標資源應為三個圖標的組合,這三個圖標的規(guī)格如下表所示: 尺寸 顏色數(shù) 是否必需 尺寸 顏色數(shù) 是否必需 1616 16色 是 2020 16色 否 2020 256色 是 4.設置提示內容 在test ie g

18、uid下建立一個新的字符串類型值,名稱為“menutext”,該值代表按鈕在ie的“工具”菜單中顯示的內容。 5.設置是否可視 在test ie guid下建立一個新的字符串類型值,名稱為“default visible”,該值代表按鈕是否可視,如可視,則該值設置為“yes”,否則設置為“no”。 6.設置按鈕id 在test ie guid下建立一個新的字符串類型值,名稱為“clsid”,將該值設置為“1fba04ee-3024-11d2-8f1f-0000f87abd16”,即系統(tǒng)默認的工具欄按鈕id。 7.設置代碼文件 在test ie guid下建立一個新的字符串類型值,名稱為“scr

19、ipt”,該值代表單擊按鈕后運行的腳本文件全路徑名稱。 對注冊表操作較熟悉的讀者,也可將前述添加ie按鈕時的修改的注冊表內容步驟導出,其內容如下所示: windows registry editor version 5.00 hkey_local_machinesoftwaremicrosoftinternet explorerextensionsfb5a1910-f110-11d2-bb9e-00c04f795683 hoticon=c:program filesmessengermsmsgs.exe,302 icon=c:program filesmessengermsmsgs.exe,3

20、01 menutext=ie工具欄測試按鈕 default visible=yes clsid=1fba04ee-3024-11d2-8f1f-0000f87abd16 script=c:iecodetoolbar.html 讀者可直接用文本編輯器修改導出的注冊表文件來建立其他的ie工具欄按鈕。當單擊該按鈕時會運行“script”鍵對應的腳本文件,該腳本文件和前述的腳本文件結構完全相同,即通過訪問external對象的menuarguments屬性獲取頁面,并進行相應的操作。 (二)程序實例 下面讓我們來實現(xiàn)在ie任務欄中增加按鈕效果。單擊該按鈕將彈出一個確認框,單擊“確定”按鈕,將使用對話框

21、來顯示當前ie頁面的所有鏈接目標。 由于創(chuàng)建工具欄按鈕的步驟已經介紹,因此不做贅述,按鈕對應的腳本程序代碼如下所示: script language=vbscript sub displink() url= set links = external.menuarguments.document.links redim params(links.length*2) result=window.confirm(共有+cstr(links.length)+個鏈接,準備瀏覽其鏈接目標嗎?) if result=-1 then for i = 0 to links.length-1 url=url+li

22、nks(i).href+chr(13) next window.alert(url) end if end sub call displink() /script 四、ie瀏覽器的外接控制 ie除提供了內置的二次開發(fā)接口外,還提供了強大的com組件接口,使開發(fā)者可通過其他開發(fā)工具來對ie進行外接控制。下面我們以vb6為開發(fā)平臺,介紹調用ie的com組件接口的操作。 (一)相關知識點 1.shelluihelper對象 shelluihelper對象是ie對象庫中提供的成員,在開發(fā)前須在程序中加入對“microsoft internet controls”類型庫的引用。在vb6中可在“引用”對話

23、框選擇“microsoft internet controls”類型庫。 importexportfavorites方法用于對收藏夾進行操作,格式如下所述: sub importexportfavorites(fimport as boolean, strimpexppath as string) 其中fimport參數(shù)為boolean型參數(shù),用于設置導入或導出收藏夾,strimpexppath參數(shù)為字符型參數(shù),用于代表文件名。 2.shellwindows對象 shellwindows對象可換取所有打開的瀏覽器窗口名稱,即返回了當前所有打開的瀏覽窗口對象集。在程序中隨后可通過“for.eac

24、h”語句來遍歷這些窗口。 shellwindows對象返回的瀏覽窗口對象包含了ie和explorer窗口(即資源管理器或“我的電腦”窗口),但ie瀏覽器的宿主程序為“iexplore.exe”,而資源管理器或“我的電腦” 的宿主程序為“explore.exe”,因此需對每一個對象按其fulname屬性來判斷是否為ie瀏覽器。 3.document對象 document對象代表了ie瀏覽器瀏覽的網頁內容。由于一個html頁面中可包含head、title和body等基本部分和applet、腳本、鏈接和表單等內容,因此需循環(huán)遍歷文檔中的所有對象來辨別。如對象名稱為“body”,那么該部分即為html

25、的正文內容,然后訪問其innertext屬性即可獲取文檔正文。 (二)程序實例 ie使用一定時間后,在收藏夾中往往積累了大量的網址,在重裝系統(tǒng)或計算機中存在多用戶時,手工方式備份和恢復收藏夾非常麻煩。本例程通過利用ie對象庫的shelluihelper對象,實現(xiàn)了導入和導出收藏夾內容的操作,運行效果如圖2所示。 單擊“導出收藏夾”,并單擊“開始”按鈕,將顯示保存文件對話框,選擇文件名后,即可將收藏夾以html的格式保存。選擇“導入收藏夾”并單擊“開始”按鈕,可將已有的符合收藏夾格式的html文件導入收藏夾。 在vb6中新建工程,然后在窗體上放置一個按鈕,一個通用對話框,一個frame控件,并放

26、置兩個單選框,如圖2所示。 按下表設置各控件屬性(控件大小、位置讀者可自行設置,其他為默認值)。 控件名稱和類型 屬性名稱 屬性值 備注 form1:form borderstyle 1 fixed/single caption ie收藏夾二次開發(fā) maxbutton 0 false minbutton 0 false startupposition 2 屏幕中心 frame1:frame caption 選擇操作方式: optexport:optionbutton caption 導出收藏夾 value -1 true optimport:optionbutton caption 導入收藏夾

27、 cmdok:commandbutton caption 開始 然后輸入代碼,具體如下所述: 為判別操作狀態(tài),首先聲明全局變量: dim import as boolean 定義對收藏夾進行操作的過程: private sub importexportbookmark(fimport as boolean) dim objsuh as shdocvw.shelluihelper set objsuh = new shdocvw.shelluihelper if fimport = true then cdlgbm.dialogtitle = 請選擇導入收藏夾的文件: on error goto

28、 cancelhandler cdlgbm.showopen else cdlgbm.dialogtitle = 請選擇導出收藏夾的文件: on error goto cancelhandler cdlgbm.showsave end if objsuh.importexportfavorites fimport, cdlgbm.filename 在文件對話框中選擇“取消”按鈕 cancelhandler: if err.number = cdlcancel then exit sub end sub 在窗體load事件中輸入初始化操作的代碼: optexport.value = true i

29、mport = false cdlgbm.cancelerror = true 在“開始”按鈕的click事件輸入以下代碼: importexportbookmark (import) 在“導出收藏夾”單選框的click事件輸入以下代碼: 設置為“導出”操作 import = false 在“導入收藏夾”單選框的click事件輸入以下代碼: 設置為“導入”操作 import = true 五、ie瀏覽器的程序控制 ie提供了document對象和html對象庫,可實現(xiàn)對網頁中各類元素的分析操作。此外ie瀏覽器還提供了控件接口,使程序可內嵌ie瀏覽器,并可模擬鍵盤或鼠標實現(xiàn)交互,實現(xiàn)諸如自動上網

30、獲取信息等功能。 (一)相關知識點 1.ie瀏覽器控件 使用ie瀏覽器控件需在vb6中的“部件”窗體中添加“microsoft internet controls”,隨后在控件工具欄上將顯示該控件的圖標。該控件的常用屬性和方法如下所述: (1)addressbar屬性:該屬性用于獲取瀏覽器的地址欄對象。 (2)busy屬性:該屬性返回瀏覽器是否正在打開網頁。 (3)document屬性:該屬性用于獲取網頁的內容。 (4)fullscreen屬性:該屬性返回瀏覽器是否處于全屏狀態(tài)。 (5)locationurl屬性:該屬性返回當前瀏覽的網址。 (6)offline屬性:該屬性返回瀏覽器當前是否在

31、線。 (7)all屬性:該屬性返回頁面包含的所有對象。 (8)tagname:該屬性返回指定對象的標記名稱。 (9)getelementsbytagname方法:該方法用于獲取指定標記的對象。 (10)navigate方法:該方法用于控制瀏覽器訪問指定的網址。 (11)stop方法:該方法用于停止瀏覽當前頁面。 2.html對象庫 獲取網頁數(shù)據(jù)必須使用html對象庫,可在“引用”窗體中添加對“microsoft html object library”的引用。html對象庫提供了大量的對象,這些對象和各類html標記相對應,如熟悉的“a”、“table”、“body”和“form”標記,一些常

32、用html對象的知識點如下所述: (1)htmlanchorelement對象:該對象代表網頁中超級鏈接(即“a”)標記,其常用屬性和方法如下所述: href屬性:該屬性用于設置鏈接的目標。 id屬性:該屬性用于設置鏈接的標識。 innerhtml屬性:該屬性返回鏈接的html代碼。 innertext屬性:該屬性返回鏈接的文字。 target屬性:該屬性用于設置鏈接的方式。 click方法:該方法可模擬單擊鏈接。 (2)htmlbody對象:該對象代表網頁中正文(即“body”)標記,其常用屬性和方法如下所述: background屬性:該屬性返回網頁的背景圖片。 bgcolor屬性:該屬性

33、返回網頁的背景色。 innertext屬性:該屬性返回網頁包含的所有文字。 (3)htmldocument對象:該對象包含網頁的整體,如所有的鏈接、表格對象等,其常用屬性和方法如下所述: anchors屬性:該屬性返回網頁包含的所有鏈接對象。 applets屬性:該屬性返回網頁包含的applet插件對象。 body屬性:該屬性返回網頁的正文對象。 forms屬性:該屬性返回網頁包含的所有表單對象。 frames屬性:該屬性返回網頁包含的所有框架對象。 images屬性:該屬性返回網頁包含的所有圖片對象。 scripts屬性:該屬性返回網頁包含的所有腳本對象。 (4)htmlelementcol

34、lection對象:該對象可獲取各類html對象的集合,如網頁的表格或表單的集合,隨后即可遍歷該集合來選擇所需的對象,其常用屬性和方法如下所述: length屬性:該屬性返回集合的成員數(shù)。 item方法:該屬性返回集合中的指定成員。 (5)htmltable對象:該對象可獲取html表格對象,也是獲取網頁信息的核心,其常用屬性和方法如下所述: cols屬性:該屬性返回表格的列數(shù)。 rows屬性:該屬性返回表格的行集合對象。 deleterow方法:該方法用于刪除表格行。 insertrow方法:該方法用于刪除表格列。 (6)htmltablecell對象:該對象可獲取html表格中的單元格對象

35、(即“td”標記中包含的內容),在控制表格對象后,需結合該對象來進一步獲取所需的網頁文字,其常用屬性和方法如下所述: cellindex屬性:該屬性返回單元格的編號。 classname屬性:該屬性返回單元格的類名。 colspan屬性:該屬性返回單元格的列合并數(shù)。 innerhtml屬性:該屬性返回單元格的html代碼。 innertext屬性:該屬性返回單元格包含的文字。 rowspan屬性:該屬性返回單元格的行合并數(shù)。 valign屬性:該屬性返回單元格的垂直對齊方式。 (7)htmltablecol對象:該對象可獲取html表格中的列對象,其常用屬性和方法如下所述: innertext

36、屬性:該屬性返回表格列包含的文字。 span屬性:該屬性返回表格列的合并數(shù)。 (8)htmltablerow對象:該對象可獲取html表格中的行對象(即“tr”標記中包含的內容),在控制表格對象后,需遍歷表格行并在此基礎上訪問特定單元格對象來獲取所需的網頁文字。該對象的常用屬性和方法如下所述: cells屬性:該屬性返回行包含的單元格集合對象。 rowindex屬性:該屬性返回行的編號。 valign屬性:該屬性返回行的垂直對齊方式。 3.頁面控制的要點 在使用ie瀏覽器控件進行網頁頁面控制時,其核心事件為控件的documentcomplete事件,僅在頁面被完全調入后,程序才可進行數(shù)據(jù)處理。

37、當觸發(fā)documentcomplete事件時,并非代表頁面已全部調入。如頁面不包含子框架,則發(fā)生documentcomplete事件時代表頁面已調入。如頁面包含多個框架,則每個框架完成時均會觸發(fā)documentcomplete事件,當所有子框架均完成后,主框架產生documentcomplete事件。因此為需判斷每次事件發(fā)生時的對象是否為webbrowser控件對象本身。 (二)程序實例 下面的例程實現(xiàn)網頁數(shù)據(jù)的獲取。結合前述知識,可得網頁數(shù)據(jù)獲取的步驟。由于針對不同網頁有完全不同的代碼,因此本文僅給出核心的思路和代碼,具體如下所述: (1)定義ihtmlelementcollection對象

38、,獲取網頁包含的表格集合。 (2)調用getelementsbytagname方法獲取指定的對象,示例代碼如下所示: dim tables as ihtmlelementcollection 獲取網頁的表格對象 set tables = webbrowser1.document.getelementsbytagname(table) (3)由于網頁一般包含多個表格,可通過htmltable對象進行處理,示例代碼如下所示: dim table1 as htmltable for each table1 in tables 處理代碼 next (4)htmltable對象的innertext屬性可

39、返回表格的全部文字信息,因此可按該信息判斷所需數(shù)據(jù)的表格,也可通過手工分析網頁源文件來獲取。 (5)為逐行、列獲取數(shù)據(jù),還需使用htmltablerow和htmltablecell對象對表格行和單元格進行操作。 通過上面的講述,相信你已掌握ie二次開發(fā)的基本方法與技巧了。其實在ie二次開發(fā)中還存在有相當多的高級方法,如利用com組件在ie中的應用。com組件以其可隨時升級、重復使用、可擴展至網絡開發(fā)和與開發(fā)語言平臺無關等特點早已被開發(fā)者們津津樂道。下面我們給出com組件在ie中的應用實例。 六、com組件在ie中的應用 com組件以其可隨時升級、重復使用、可擴展至網絡開發(fā)和與開發(fā)語言平臺無關等

40、特點早已被開發(fā)者們津津樂道,通過前面知識的學習,讀者完全可結合com組件技術和ie腳本技術實現(xiàn)更為強大的綜合應用。下面將使用vb6開發(fā)com組件,并通過ie右鍵菜單來創(chuàng)建組件實例,實現(xiàn)功能強大的ie輔助工具。 (一)相關知識點 1.document對象 document對象的一些屬性在前述內容中已介紹,不過在頁面元素分析時,還有一些常用的屬性和集合,具體如下所述: (1)url屬性:該屬性返回當前網頁的網址。 (2)scripts集合:該集合代表頁面中的所有腳本。 (3)links集合:該集合代表頁面中的所有超鏈接。 (4)images集合:該集合代表頁面中的所有圖片。 (5)forms集合:

41、該集合代表頁面中的所有表單。 (6)action屬性:該屬性返回表單的提交目標網址。 (7)elements集合:該集合代表表單中包含的所有html控件,如input(輸入框)等。 (8)type屬性:該屬性返回表單中html控件的類型。 2.調用com組件 以vb為例,調用com組件有二種方法,如下所述: (1)通過new關鍵字創(chuàng)建:單擊“工程”菜單的“引用”子菜單,在“引用”對話框中列出了可使用的引用類型,選擇所需類型后,單擊“確定”并切換至代碼窗口。隨后在代碼窗口中可用“dim”語句定義變量,在“as”關鍵字后,輸入“new”關鍵字和空格,隨后代碼編輯器會提示可通過“new”關鍵字定義的

42、對象。該方法使用較簡單,但靈活性較差。 (2)通過函數(shù)創(chuàng)建:通過createobject 函數(shù)和getobject 函數(shù)創(chuàng)建com組件,且不需事先聲明,靈活性較強,具體如下所述: createobject 函數(shù):該函數(shù)用于創(chuàng)建并返回一個com對象實例。 getobject 函數(shù):該函數(shù)以關聯(lián)的方式返回com對象的引用。 (3)釋放com組件實例:如用戶將createobject函數(shù)創(chuàng)建的com組件實例賦予一個object型變量, 那么可通過將該object型變量賦予nothing常量值來釋放該com組件實例。語法如下所示: set comobject = nothing (二)程序實例 本實例

43、綜合運用了前述的相關知識。使用了vb6開發(fā)組件,該組件可通過ie右鍵菜單項激活,運行后以可視化的方式顯示當前網頁包含的各類資源(頁面腳本、超鏈接、表單單元和圖片),并可調用網際快車和網絡螞蟻進行相關資源的下載。ie右鍵新增菜單項如圖3所示: 單擊該菜單項將顯示一個包含當前網頁腳本、超鏈接、表單和圖片資源的窗體,對于可下載的資源(如超鏈接和圖片資源),將以復選列表框的形式供用戶選擇,并可調用網際快車和網絡螞蟻進行相關資源的下載,顯示可下載資源的窗體效果如圖4所示: 調用網際快車下載相關資源的界面如圖5所示: 對于腳本和表單資源,該窗體將以文本框的形式顯示其代碼,如圖6所示: 在vb6中創(chuàng)建com

44、非常方便,單擊“文件”菜單的“新建工程”子菜單,在彈出的“新建工程”窗體中選擇“activex dll”項,系統(tǒng)隨后將自動添加一個com組件的類模塊。 在注冊表的“hkey_current_usersoftwaremicrosoftinternet explorermenuext”下建立新項,命名為“資源分析”,值為對應的腳本文件。然后在該項中建立一個dword鍵“contexts”,值為0xf3(即單擊頁面時顯示該菜單項)。 在vb6中單擊“文件”菜單的“新建工程”子菜單,在彈出的“新建工程”窗體中選擇“activex dll”。系統(tǒng)將自動添加類模塊,將該工程命名為“websource”、將

45、類模塊命名為“webclass”,隨后添加一個窗體,命名為“formweb”,此時的工程資源管理器如圖7所示: 添加“microsoft tabbed dialog control 6.0”控件,然后在窗體上放置一個sstab控件并新建二個選項卡,二個按鈕控件,二個單選框控件,二個列表框控件,二個文本框控件和二個標簽控件,如圖8和圖9所示: 按下表設置各控件屬性(控件大小、位置讀者可自行設置),其他為默認值。 控件名稱和類型 屬性名稱 屬性值 備注 formweb:form borderstyle 3 fixed dialog caption html資源分析 maxbutton 0 fals

46、e minbutton 0 false startupposition 2 屏幕中心 sstab1:sstab tabs 2 tab 1 tabsperrow 2 tabcaption(0) 腳本代碼及窗體控件 tabcaption(1) 圖片及鏈接 cmdflashget :commandbutton caption 使用網際快車下載 cmdnetant :commandbutton caption 使用網絡螞蟻下載 option2 :optionbutton caption 鏈接 option1 :optionbutton caption 圖片 lstlink :listbox style

47、 1 checkbox lstimage :listbox style 1 checkbox txtform :textbox multiline -1 true scrollbars 3 both txtscript :textbox multiline -1 true scrollbars 3 both label2 :label caption 窗體控件: label1 :label caption 腳本代碼: 輸入窗體的程序代碼,首先定義全局變量,代碼如下所示: public strurl as string 存放網址的變量 輸入各控件事件和自定義過程代碼,如下所示: 使用網際快車下載

48、圖片的過程 sub useflashdownpic() on error resume next dim jetcarcatch as object dim i, j as integer 創(chuàng)建網際快車對象 set jetcarcatch = createobject(jetcar.netscape) if err 0 then msgbox 未正確安裝網際快車! else 遍歷列表框,獲取選擇的圖片 j = 0 for i = 0 to lstimage.listcount - 1 if lstimage.selected(i) = true then j = j + 1 end if ne

49、xt i redim params(j * 2) params(0) = strurl j = 0 for i = 0 to lstimage.listcount - 1 if lstimage.selected(i) = true then params(j * 2 + 1) = lstimage.list(i) params(j * 2 + 2) = 圖片 j = j + 1 end if next i 調用網際快車進行下載 jetcarcatch.addurllist params end if end sub 使用網絡螞蟻下載圖片的過程 sub useantdownpic() on e

50、rror resume next dim netantsapi as object dim i, j as integer 創(chuàng)建網絡螞蟻對象 set netantsapi = createobject(netants.api) if err 0 then msgbox 未正確安裝網絡螞蟻! else 遍歷列表框,獲取選擇的圖片 j = 0 for i = 0 to lstimage.listcount - 1 if lstimage.selected(i) = true then j = j + 1 end if next i redim params(j * 2) params(0) = s

51、trurl j = 0 for i = 0 to lstimage.listcount - 1 if lstimage.selected(i) = true then params(j * 2 + 1) = lstimage.list(i) params(j * 2 + 2) = 圖片 j = j + 1 end if next i 調用網絡螞蟻進行下載 netantsapi.addurllist params end if end sub 使用網際快車下載鏈接的過程 sub useflashdownlink() on error resume next dim jetcarcatch as

52、object dim i, j as integer set jetcarcatch = createobject(jetcar.netscape) if err 0 then msgbox 未正確安裝網際快車! else j = 0 for i = 0 to lstlink.listcount - 1 if lstlink.selected(i) = true then j = j + 1 end if next i redim params(j * 2) params(0) = strurl j = 0 for i = 0 to lstlink.listcount - 1 if lstlink.selected(i) = true then params(j * 2 + 1) = lstlink.list(i) params(j * 2 + 2) = 鏈接 j = j + 1 end if next i jetcarcatch.addurll

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論