




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
49/49IE瀏覽器二次開發(fā)實用指南
IE(InternetExplorer)瀏覽器提供了功能強大的二次開發(fā)接口,很多下載軟件(網(wǎng)際快車和網(wǎng)絡(luò)螞蟻等)即利用了相應的接口,實現(xiàn)了在IE中的集成。開發(fā)者如能巧妙地利用這些接口,則完全可以充分發(fā)揮創(chuàng)造力,開發(fā)出形形色色的IE輔助軟件。一、IE右鍵菜單的開發(fā)對于IE的右鍵菜單,我們并不陌生,很多下載軟件都在右鍵菜單中新增了相應的菜單項。下面讓我們利用IE提供的接口實現(xiàn)IE右鍵菜單的二次開發(fā)。(一)相關(guān)知識點1.添加右鍵菜單添加右鍵菜單的方法很簡單,在注冊表HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\MenuExt項下建立一個新項,該項名稱即代表顯示在IE右鍵菜單中的菜單項標題,如安裝了網(wǎng)際快車或網(wǎng)絡(luò)螞蟻,那么在注冊表編輯器中即可發(fā)現(xiàn)相應鍵值。2.設(shè)置執(zhí)行代碼添加了菜單項后,我們必須為菜單項設(shè)置單擊后執(zhí)行的代碼。首先將新建注冊表項的默認值設(shè)置為一個URL(UniformResourceLocator,統(tǒng)一資源定位器)地址,當用戶單擊該菜單項后,IE將調(diào)用該URL所指向的腳本并執(zhí)行其中的代碼。我們分析相應鍵值即可發(fā)現(xiàn)網(wǎng)際快車和網(wǎng)絡(luò)螞蟻在單擊IE右鍵菜單相應項時訪問的文件。具體如下所述:(1)“DownloadbyNetAnts”項對應訪問網(wǎng)絡(luò)螞蟻安裝目錄下的“NAGet.htm”文件。(2)“Download&AllbyNetAnts”項對應訪問網(wǎng)絡(luò)螞蟻安裝目錄下的“NAGetAll.htm”文件。(3)“使用網(wǎng)際快車下載”項對應訪問網(wǎng)際快車安裝目錄下的“jc_link.htm”文件。(4)“使用網(wǎng)際快車下載全部鏈接”項對應訪問網(wǎng)際快車安裝目錄下的“jc_all.htm”文件。3.開發(fā)常用對象在調(diào)用的目標腳本文件中,通過訪問IE提供的一些右鍵開發(fā)專用對象,即可訪問鏈接、圖片、表單域或選擇的文本等頁面對象。具體如下所述:(1)external對象:該對象允許程序處理由IE瀏覽器組件提供的附加對象。當其可用時,對象模型由IE瀏覽器的組件定義。通過external對象,可訪問當前IE頁面的各個控件,是IE右鍵菜單開發(fā)的關(guān)鍵。(2)links對象:該對象屬于Document對象,用于返回HTML頁面所有超鏈接的集合,該對象的常用屬性和方法如下所述:length屬性:該屬性用于返回鏈接的數(shù)量。href屬性:該屬性用于設(shè)置鏈接的目標。innerText屬性:該屬性用于獲取包含在HTML標記中的文字。item方法:該方法用于訪問指定的鏈接。tags方法:該方法用于獲取HTML的標記名稱。(3)images對象:該對象屬于Document對象,用于返回HTML頁面所有的圖片集合,即包含在“<IMG>”標志中的圖片文件,該對象的常用屬性和方法如下所述:src屬性:該屬性用于獲取圖片的地址。alt屬性:該屬性用于獲取圖片的說明文字。4.設(shè)置顯示條件有時,右鍵菜單需要在特定條件下顯示,因此需在前述新建的注冊項下再建立一個DWORD類型鍵,鍵名為Contexts,如未設(shè)置Contexts項,則新建的IE右鍵菜單項會在單擊任何頁面對象時出現(xiàn)。通過Contexts項可設(shè)置菜單項在IE中右鍵單擊時出現(xiàn)的對象,該值的取值范圍如下表所示:對象值對象值缺省0x1圖片0x2控件0x4表單域0x8選擇文本0x10錨點(超鏈接)0x20Contexts項的值可為表1中的單個值或不同值的組合,如需要菜單項在用戶單擊圖片或超級鏈接時出現(xiàn),可將其值設(shè)置為“dword:00000022”(即0x20+0x2的運算值)。(二)程序?qū)嵗敒g覽包含大量鏈接的頁面時,用戶常常希望同時打開這些鏈接,而IE瀏覽器并未提供類似“在新窗口中打開所有鏈接”的菜單項,只能逐一手工打開。我們可以在IE右鍵菜單項中添加“在新窗口中打開所有鏈接”菜單項。單擊“在新窗口中打開所有鏈接”菜單項,將彈出一個顯示鏈接數(shù)的確認對話框,單擊“是”按鈕后將對每一個鏈接新建IE窗口進行瀏覽。在該例程中我們需要使用:confirm方法:該方法用于顯示確認對話框,并可獲取用戶的選擇內(nèi)容。open方法:該方法用于新建IE窗體并打開指定的URL。首先在注冊表HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\MenuExt下建立新項,命名為“在新窗口中打開所有鏈接”,其默認值為對應的腳本文件。然后在該項中建立一個DWORD鍵“Contexts”,值為0x35(即單擊頁面時顯示該菜單項)。在新建項對應的腳本文件中輸入代碼:<scriptlanguage="VBScript">subdisplink()'獲取頁面全部鏈接setlinks=external.menuArguments.document.links'定義存放鏈接的數(shù)組ReDimparams(links.length*2)'在確認框中顯示鏈接數(shù)量result=window.confirm("共有"+cstr(links.length)+"個鏈接,是否準備開新窗口打開?")'如確認,則新建IE窗口并打開所有鏈接ifresult=-1thenfori=0tolinks.length-1'調(diào)用open方法打開新窗口result=window.open(links(i).href)nextendifendsubcalldisplink()</script>重啟IE瀏覽器,訪問包含多個鏈接的網(wǎng)頁,單擊該菜單項即可實現(xiàn)前述效果。二、IE右鍵菜單開發(fā)進階雖然網(wǎng)際快車和網(wǎng)絡(luò)螞蟻在IE右鍵菜單中添加了相應的菜單項,但學習了前述的右鍵菜單基本開發(fā)后,完全可自行動手對其進行IE右鍵菜單的擴展開發(fā),即結(jié)合腳本程序處理IE網(wǎng)頁后調(diào)用這兩個下載工具來實現(xiàn)各類特殊的下載功能,進一步增強IE右鍵菜單的功能。(一)相關(guān)知識點1.網(wǎng)際快車組件(1)Netscape對象:該對象用于啟動網(wǎng)絡(luò)快車,類名為“JetCar.Netscape”。(2)AddUrlList方法:批量添加下載地址。(3)AddUrl:添加一個下載地址。2.網(wǎng)絡(luò)螞蟻組件(1)API對象:該對象用于啟動網(wǎng)絡(luò)螞蟻。類名為“NetAnts.API”。(2)AddUrlList方法:批量添加下載地址。(3)AddUrl:添加一個下載地址。3.添加下載地址的要點網(wǎng)際快車和網(wǎng)絡(luò)螞蟻在批量添加下載地址時需注意,必需創(chuàng)建一個元素個數(shù)為下載鏈接數(shù)2倍加1的數(shù)組,然后數(shù)組的第一個元素需存放當前頁面地址,其他元素如為奇數(shù),則存放鏈接的網(wǎng)址,如為偶數(shù),則存放鏈接的說明文字。(二)程序?qū)嵗W(wǎng)際快車和網(wǎng)絡(luò)螞蟻在下載全部鏈接時均無法批量下載以“<IMG>”標記方式直接嵌入網(wǎng)頁的圖片,僅能使用下載單個鏈接的方法逐一下載,效率大為降低。本實例通過自行編制腳本程序?qū)崿F(xiàn)了IE右鍵菜單的擴展開發(fā),運行后對包含鏈接的網(wǎng)頁進行下載全部鏈接操作時,其下載列表中不僅添加所有的鏈接,還可添加所有的頁面圖片,網(wǎng)際快車的效果如圖1所示:通過分析網(wǎng)際快車和網(wǎng)絡(luò)螞蟻所使用的腳本文件代碼,可得出這兩個軟件無法下載網(wǎng)頁內(nèi)嵌圖片的原因,具體如下所述:(1)腳本均未對網(wǎng)頁的圖片對象進行相關(guān)操作。(2)腳本僅對鏈接(links)對象進行了操作。按前述知識,添加下載所有內(nèi)嵌圖片功能的步驟如下所述:(1)獲取網(wǎng)頁的圖像(images)對象。(2)定義新的下載列表數(shù)組。(3)遍歷圖像對象,按程序接口添加相關(guān)的網(wǎng)址和說明。由于創(chuàng)建IE右鍵菜單項的步驟已經(jīng)介紹,因此不做贅述,對應的腳本程序代碼如下所示:<scriptlanguage="VBScript">OnErrorResumeNextsetJetCarCatch=CreateObject("JetCar.Netscape")iferr<>0thenMsgBox("FlashGetnotproperlyinstalled!"+vbCrLf+"PleaseInstallFlashGetagain")elsesetlinks=external.menuArguments.document.links'將頁面的所有圖片賦予imgs變量setimgs=external.menuArguments.document.images'說明:按鏈接和圖片的數(shù)量進行計算,并重定義數(shù)組ReDimparams(links.length*2+imgs.length*2)j=links.length-1k=imgs.length-1params(0)=external.menuArguments.document.Urlfori=0tojparams(i*2+1)=links(i).hrefparams(i*2+2)=links(i).innerTextnextforj=0tok'將奇數(shù)的數(shù)組元素賦值為圖片的目標網(wǎng)址,為FlashGet的程序接口要求params(j*2+1+i*2)=imgs(j).src'將偶數(shù)的數(shù)組元素賦值為圖片的說明文字,為FlashGet的程序接口要求params(j*2+2+i*2)=imgs(j).altnextJetCarCatch.AddUrlListparamsendif</script>三、IE工具欄按鈕的開發(fā)在安裝了網(wǎng)際快車、網(wǎng)絡(luò)螞蟻和金山系列軟件后,均會在IE工具欄或“工具”菜單中添加相應的按鈕和菜單項。下面讓我們利用IE提供的接口實現(xiàn)IE工具欄按鈕的二次開發(fā)。(一)相關(guān)知識點添加IE任務(wù)欄按鈕需對注冊表進行多步操作,因此建議讀者先備份注冊表。通過對已有IE任務(wù)欄按鈕的相應注冊表項進行分析,得出修改注冊表的基本步驟,具體如下所述:1.創(chuàng)建GUID在注冊表HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\Extensions\CmdMapping下建立一個GUID(GloballyUniqueIDentifier,全局唯一描述符)。本例建立的DWORD值名稱是“{FB5A1910-F110-11d2-BB9E-00C04F795683}”,其值為“0000200c”(值由NextId鍵值決定)。建立完畢,在同一主鍵下有一個重要的鍵值需修改,即NextId。建議在修改前記錄NextId值,在建立GUID需將該值遞增1,如原NextId為“dword:00002009”,那么建立新GUID后,NextId值應修改為“dword:000020a”(按十六進制計算)。2.創(chuàng)建注冊表項在注冊表HKEY_LOCAL_MACHINE\Software\Microsoft\InternetExplorer\Extensions下添加一個新項,名稱為剛才建立的GUID名稱。以下介紹的鍵位置,如未指定,均用“<TestIEGUID>”來代表(HKEY_LOCAL_MACHINE\Software\Microsoft\InternetExplorer\Extensions\<TestIEGUID>”)。3.設(shè)置按鈕圖標在<TestIEGUID>下新建一個String類型值,名稱為“HotIcon”,該值代表當按鈕獲取焦點時的圖標,一般包括圖標文件全路徑名和圖標索引,如“C:\ProgramFiles\Messenger\MSMSGS.EXE,302”,也可直接輸入圖標文件名。在<TestIEGUID>下新建一個String類型值,名稱為“Icon”,該值代表當按鈕失去焦點時的圖標,一般包括圖標文件全路徑名和圖標索引,也可直接輸入圖標文件名。IE工具欄按鈕需20×20和16×16兩種尺寸的圖標,前者用于正常狀態(tài)顯示,后者用于全屏狀態(tài)顯示,因此上述HotIcon和Icon指向的圖標資源應為三個圖標的組合,這三個圖標的規(guī)格如下表所示:尺寸顏色數(shù)是否必需尺寸顏色數(shù)是否必需16×1616色是20×2016色否20×20256色是4.設(shè)置提示內(nèi)容在<TestIEGUID>下建立一個新的字符串類型值,名稱為“MenuText”,該值代表按鈕在IE的“工具”菜單中顯示的內(nèi)容。5.設(shè)置是否可視在<TestIEGUID>下建立一個新的字符串類型值,名稱為“DefaultVisible”,該值代表按鈕是否可視,如可視,則該值設(shè)置為“Yes”,否則設(shè)置為“No”。6.設(shè)置按鈕ID在<TestIEGUID>下建立一個新的字符串類型值,名稱為“Clsid”,將該值設(shè)置為“{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}”,即系統(tǒng)默認的工具欄按鈕ID。7.設(shè)置代碼文件在<TestIEGUID>下建立一個新的字符串類型值,名稱為“Script”,該值代表單擊按鈕后運行的腳本文件全路徑名稱。對注冊表操作較熟悉的讀者,也可將前述添加IE按鈕時的修改的注冊表內(nèi)容步驟導出,其內(nèi)容如下所示:WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\Extensions\{FB5A1910-F110-11d2-BB9E-00C04F795683}]"HotIcon"="C:\\ProgramFiles\\Messenger\\MSMSGS.EXE,302""Icon"="C:\\ProgramFiles\\Messenger\\MSMSGS.EXE,301""MenuText"="IE工具欄測試按鈕""DefaultVisible"="Yes""Clsid"="{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}""Script"="C:\\iecode\\toolbar.html"讀者可直接用文本編輯器修改導出的注冊表文件來建立其他的IE工具欄按鈕。當單擊該按鈕時會運行“script”鍵對應的腳本文件,該腳本文件和前述的腳本文件結(jié)構(gòu)完全相同,即通過訪問external對象的menuArguments屬性獲取頁面,并進行相應的操作。(二)程序?qū)嵗旅孀屛覀儊韺崿F(xiàn)在IE任務(wù)欄中增加按鈕效果。單擊該按鈕將彈出一個確認框,單擊“確定”按鈕,將使用對話框來顯示當前IE頁面的所有鏈接目標。由于創(chuàng)建工具欄按鈕的步驟已經(jīng)介紹,因此不做贅述,按鈕對應的腳本程序代碼如下所示:<scriptlanguage="VBScript">subdisplink()url=""setlinks=external.menuArguments.document.linksReDimparams(links.length*2)result=window.confirm(″共有″+cstr(links.length)+"個鏈接,準備瀏覽其鏈接目標嗎?")ifresult=-1thenfori=0tolinks.length-1url=url+links(i).href+chr(13)nextwindow.alert(url)endifendsubcalldisplink()</script>四、IE瀏覽器的外接控制IE除提供了內(nèi)置的二次開發(fā)接口外,還提供了強大的COM組件接口,使開發(fā)者可通過其他開發(fā)工具來對IE進行外接控制。下面我們以VB6為開發(fā)平臺,介紹調(diào)用IE的COM組件接口的操作。(一)相關(guān)知識點1.ShellUIHelper對象ShellUIHelper對象是IE對象庫中提供的成員,在開發(fā)前須在程序中加入對“MicrosoftInternetControls”類型庫的引用。在VB6中可在“引用”對話框選擇“MicrosoftInternetControls”類型庫。ImportExportFavorites方法用于對收藏夾進行操作,格式如下所述:SubImportExportFavorites(fImportAsBoolean,strImpExpPathAsString)其中fimport參數(shù)為Boolean型參數(shù),用于設(shè)置導入或?qū)С鍪詹貖A,strImpExpPath參數(shù)為字符型參數(shù),用于代表文件名。2.ShellWindows對象ShellWindows對象可換取所有打開的瀏覽器窗口名稱,即返回了當前所有打開的瀏覽窗口對象集。在程序中隨后可通過“For...Each”語句來遍歷這些窗口。ShellWindows對象返回的瀏覽窗口對象包含了IE和Explorer窗口(即資源管理器或“我的電腦”窗口),但IE瀏覽器的宿主程序為“Iexplore.exe”,而資源管理器或“我的電腦”的宿主程序為“Explore.exe”,因此需對每一個對象按其FulName屬性來判斷是否為IE瀏覽器。3.Document對象Document對象代表了IE瀏覽器瀏覽的網(wǎng)頁內(nèi)容。由于一個HTML頁面中可包含HEAD、TITLE和BODY等基本部分和Applet、腳本、鏈接和表單等內(nèi)容,因此需循環(huán)遍歷文檔中的所有對象來辨別。如對象名稱為“BODY”,那么該部分即為HTML的正文內(nèi)容,然后訪問其innerText屬性即可獲取文檔正文。(二)程序?qū)嵗齀E使用一定時間后,在收藏夾中往往積累了大量的網(wǎng)址,在重裝系統(tǒng)或計算機中存在多用戶時,手工方式備份和恢復收藏夾非常麻煩。本例程通過利用IE對象庫的ShellUIHelper對象,實現(xiàn)了導入和導出收藏夾內(nèi)容的操作,運行效果如圖2所示。單擊“導出收藏夾”,并單擊“開始”按鈕,將顯示保存文件對話框,選擇文件名后,即可將收藏夾以HTML的格式保存。選擇“導入收藏夾”并單擊“開始”按鈕,可將已有的符合收藏夾格式的HTML文件導入收藏夾。在VB6中新建工程,然后在窗體上放置一個按鈕,一個通用對話框,一個Frame控件,并放置兩個單選框,如圖2所示。按下表設(shè)置各控件屬性(控件大小、位置讀者可自行設(shè)置,其他為默認值)??丶Q和類型屬性名稱屬性值備注Form1:FormBorderStyle1Fixed/SingleCaptionIE收藏夾二次開發(fā)MaxButton0FalseMinButton0FalseStartUpPosition2屏幕中心Frame1:FrameCaption選擇操作方式:OptExport:OptionButtonCaption導出收藏夾value-1TrueOptImport:OptionButtonCaption導入收藏夾CmdOK:CommandButtonCaption開始然后輸入代碼,具體如下所述:為判別操作狀態(tài),首先聲明全局變量:DimImportAsBoolean定義對收藏夾進行操作的過程:PrivateSubImportExportBookmark(fImportAsBoolean)DimObjSUHAsSHDocVw.ShellUIHelperSetObjSUH=NewSHDocVw.ShellUIHelperIffImport=TrueThenCDlgbm.DialogTitle="請選擇導入收藏夾的文件:"OnErrorGoToCancelHandlerCDlgbm.ShowOpenElseCDlgbm.DialogTitle="請選擇導出收藏夾的文件:"OnErrorGoToCancelHandlerCDlgbm.ShowSaveEndIfObjSUH.ImportExportFavoritesfImport,CDlgbm.FileName'在文件對話框中選擇“取消”按鈕CancelHandler:IfErr.Number=cdlCancelThenExitSubEndSub在窗體Load事件中輸入初始化操作的代碼:OptExport.value=TrueImport=FalseCDlgbm.CancelError=True在“開始”按鈕的Click事件輸入以下代碼:ImportExportBookmark(Import)在“導出收藏夾”單選框的Click事件輸入以下代碼:'設(shè)置為“導出”操作Import=False在“導入收藏夾”單選框的Click事件輸入以下代碼:'設(shè)置為“導入”操作Import=True五、IE瀏覽器的程序控制IE提供了Document對象和HTML對象庫,可實現(xiàn)對網(wǎng)頁中各類元素的分析操作。此外IE瀏覽器還提供了控件接口,使程序可內(nèi)嵌IE瀏覽器,并可模擬鍵盤或鼠標實現(xiàn)交互,實現(xiàn)諸如自動上網(wǎng)獲取信息等功能。(一)相關(guān)知識點1.IE瀏覽器控件使用IE瀏覽器控件需在VB6中的“部件”窗體中添加“MicrosoftInternetControls”,隨后在控件工具欄上將顯示該控件的圖標。該控件的常用屬性和方法如下所述:(1)AddressBar屬性:該屬性用于獲取瀏覽器的地址欄對象。(2)Busy屬性:該屬性返回瀏覽器是否正在打開網(wǎng)頁。(3)Document屬性:該屬性用于獲取網(wǎng)頁的內(nèi)容。(4)FullScreen屬性:該屬性返回瀏覽器是否處于全屏狀態(tài)。(5)LocationURL屬性:該屬性返回當前瀏覽的網(wǎng)址。(6)Offline屬性:該屬性返回瀏覽器當前是否在線。(7)All屬性:該屬性返回頁面包含的所有對象。(8)tagName:該屬性返回指定對象的標記名稱。(9)getElementsByTagName方法:該方法用于獲取指定標記的對象。(10)Navigate方法:該方法用于控制瀏覽器訪問指定的網(wǎng)址。(11)Stop方法:該方法用于停止瀏覽當前頁面。2.HTML對象庫獲取網(wǎng)頁數(shù)據(jù)必須使用HTML對象庫,可在“引用”窗體中添加對“MicrosoftHTMLObjectLibrary”的引用。HTML對象庫提供了大量的對象,這些對象和各類HTML標記相對應,如熟悉的“<a>”、“<Table>”、“<body>”和“<form>”標記,一些常用HTML對象的知識點如下所述:(1)HTMLAnchorElement對象:該對象代表網(wǎng)頁中超級鏈接(即“<a>”)標記,其常用屬性和方法如下所述:href屬性:該屬性用于設(shè)置鏈接的目標。id屬性:該屬性用于設(shè)置鏈接的標識。innerHTML屬性:該屬性返回鏈接的HTML代碼。innerText屬性:該屬性返回鏈接的文字。target屬性:該屬性用于設(shè)置鏈接的方式。click方法:該方法可模擬單擊鏈接。(2)HTMLBody對象:該對象代表網(wǎng)頁中正文(即“<body>”)標記,其常用屬性和方法如下所述:background屬性:該屬性返回網(wǎng)頁的背景圖片。bgColor屬性:該屬性返回網(wǎng)頁的背景色。innerText屬性:該屬性返回網(wǎng)頁包含的所有文字。(3)HTMLDocument對象:該對象包含網(wǎng)頁的整體,如所有的鏈接、表格對象等,其常用屬性和方法如下所述:anchors屬性:該屬性返回網(wǎng)頁包含的所有鏈接對象。applets屬性:該屬性返回網(wǎng)頁包含的Applet插件對象。body屬性:該屬性返回網(wǎng)頁的正文對象。forms屬性:該屬性返回網(wǎng)頁包含的所有表單對象。frames屬性:該屬性返回網(wǎng)頁包含的所有框架對象。images屬性:該屬性返回網(wǎng)頁包含的所有圖片對象。scripts屬性:該屬性返回網(wǎng)頁包含的所有腳本對象。(4)HTMLElementCollection對象:該對象可獲取各類HTML對象的集合,如網(wǎng)頁的表格或表單的集合,隨后即可遍歷該集合來選擇所需的對象,其常用屬性和方法如下所述:length屬性:該屬性返回集合的成員數(shù)。item方法:該屬性返回集合中的指定成員。(5)HTMLTable對象:該對象可獲取HTML表格對象,也是獲取網(wǎng)頁信息的核心,其常用屬性和方法如下所述:cols屬性:該屬性返回表格的列數(shù)。rows屬性:該屬性返回表格的行集合對象。deleteRow方法:該方法用于刪除表格行。insertRow方法:該方法用于刪除表格列。(6)HTMLTableCell對象:該對象可獲取HTML表格中的單元格對象(即“<TD>”標記中包含的內(nèi)容),在控制表格對象后,需結(jié)合該對象來進一步獲取所需的網(wǎng)頁文字,其常用屬性和方法如下所述:cellIndex屬性:該屬性返回單元格的編號。className屬性:該屬性返回單元格的類名。colSpan屬性:該屬性返回單元格的列合并數(shù)。innerHTML屬性:該屬性返回單元格的HTML代碼。innerText屬性:該屬性返回單元格包含的文字。rowSpan屬性:該屬性返回單元格的行合并數(shù)。vAlign屬性:該屬性返回單元格的垂直對齊方式。(7)HTMLTableCol對象:該對象可獲取HTML表格中的列對象,其常用屬性和方法如下所述:innerText屬性:該屬性返回表格列包含的文字。span屬性:該屬性返回表格列的合并數(shù)。(8)HTMLTableRow對象:該對象可獲取HTML表格中的行對象(即“<TR>”標記中包含的內(nèi)容),在控制表格對象后,需遍歷表格行并在此基礎(chǔ)上訪問特定單元格對象來獲取所需的網(wǎng)頁文字。該對象的常用屬性和方法如下所述:cells屬性:該屬性返回行包含的單元格集合對象。rowIndex屬性:該屬性返回行的編號。vAlign屬性:該屬性返回行的垂直對齊方式。3.頁面控制的要點在使用IE瀏覽器控件進行網(wǎng)頁頁面控制時,其核心事件為控件的DocumentComplete事件,僅在頁面被完全調(diào)入后,程序才可進行數(shù)據(jù)處理。當觸發(fā)DocumentComplete事件時,并非代表頁面已全部調(diào)入。如頁面不包含子框架,則發(fā)生DocumentComplete事件時代表頁面已調(diào)入。如頁面包含多個框架,則每個框架完成時均會觸發(fā)DocumentComplete事件,當所有子框架均完成后,主框架產(chǎn)生DocumentComplete事件。因此為需判斷每次事件發(fā)生時的對象是否為WebBrowser控件對象本身。(二)程序?qū)嵗旅娴睦虒崿F(xiàn)網(wǎng)頁數(shù)據(jù)的獲取。結(jié)合前述知識,可得網(wǎng)頁數(shù)據(jù)獲取的步驟。由于針對不同網(wǎng)頁有完全不同的代碼,因此本文僅給出核心的思路和代碼,具體如下所述:(1)定義IHTMLElementCollection對象,獲取網(wǎng)頁包含的表格集合。(2)調(diào)用getElementsByTagName方法獲取指定的對象,示例代碼如下所示:DimTablesAsIHTMLElementCollection'獲取網(wǎng)頁的表格對象SetTables=WebBrowser1.Document.getElementsByTagName("Table")(3)由于網(wǎng)頁一般包含多個表格,可通過HTMLTable對象進行處理,示例代碼如下所示:DimTable1AsHTMLTableForEachTable1InTables'處理代碼Next(4)HTMLTable對象的innerText屬性可返回表格的全部文字信息,因此可按該信息判斷所需數(shù)據(jù)的表格,也可通過手工分析網(wǎng)頁源文件來獲取。(5)為逐行、列獲取數(shù)據(jù),還需使用HTMLTableRow和HTMLTableCell對象對表格行和單元格進行操作。通過上面的講述,相信你已掌握IE二次開發(fā)的基本方法與技巧了。其實在IE二次開發(fā)中還存在有相當多的高級方法,如利用COM組件在IE中的應用。COM組件以其可隨時升級、重復使用、可擴展至網(wǎng)絡(luò)開發(fā)和與開發(fā)語言平臺無關(guān)等特點早已被開發(fā)者們津津樂道。下面我們給出COM組件在IE中的應用實例。六、COM組件在IE中的應用COM組件以其可隨時升級、重復使用、可擴展至網(wǎng)絡(luò)開發(fā)和與開發(fā)語言平臺無關(guān)等特點早已被開發(fā)者們津津樂道,通過前面知識的學習,讀者完全可結(jié)合COM組件技術(shù)和IE腳本技術(shù)實現(xiàn)更為強大的綜合應用。下面將使用VB6開發(fā)COM組件,并通過IE右鍵菜單來創(chuàng)建組件實例,實現(xiàn)功能強大的IE輔助工具。(一)相關(guān)知識點1.Document對象Document對象的一些屬性在前述內(nèi)容中已介紹,不過在頁面元素分析時,還有一些常用的屬性和集合,具體如下所述:(1)URL屬性:該屬性返回當前網(wǎng)頁的網(wǎng)址。(2)scripts集合:該集合代表頁面中的所有腳本。(3)links集合:該集合代表頁面中的所有超鏈接。(4)images集合:該集合代表頁面中的所有圖片。(5)forms集合:該集合代表頁面中的所有表單。(6)Action屬性:該屬性返回表單的提交目標網(wǎng)址。(7)elements集合:該集合代表表單中包含的所有HTML控件,如INPUT(輸入框)等。(8)Type屬性:該屬性返回表單中HTML控件的類型。2.調(diào)用COM組件以VB為例,調(diào)用COM組件有二種方法,如下所述:(1)通過New關(guān)鍵字創(chuàng)建:單擊“工程”菜單的“引用”子菜單,在“引用”對話框中列出了可使用的引用類型,選擇所需類型后,單擊“確定”并切換至代碼窗口。隨后在代碼窗口中可用“Dim”語句定義變量,在“As”關(guān)鍵字后,輸入“New”關(guān)鍵字和空格,隨后代碼編輯器會提示可通過“New”關(guān)鍵字定義的對象。該方法使用較簡單,但靈活性較差。(2)通過函數(shù)創(chuàng)建:通過CreateObject函數(shù)和GetObject函數(shù)創(chuàng)建COM組件,且不需事先聲明,靈活性較強,具體如下所述:CreateObject函數(shù):該函數(shù)用于創(chuàng)建并返回一個COM對象實例。GetObject函數(shù):該函數(shù)以關(guān)聯(lián)的方式返回COM對象的引用。(3)釋放COM組件實例:如用戶將CreateObject函數(shù)創(chuàng)建的COM組件實例賦予一個Object型變量,那么可通過將該Object型變量賦予Nothing常量值來釋放該COM組件實例。語法如下所示:SetComObject=Nothing(二)程序?qū)嵗緦嵗C合運用了前述的相關(guān)知識。使用了VB6開發(fā)組件,該組件可通過IE右鍵菜單項激活,運行后以可視化的方式顯示當前網(wǎng)頁包含的各類資源(頁面腳本、超鏈接、表單單元和圖片),并可調(diào)用網(wǎng)際快車和網(wǎng)絡(luò)螞蟻進行相關(guān)資源的下載。IE右鍵新增菜單項如圖3所示:單擊該菜單項將顯示一個包含當前網(wǎng)頁腳本、超鏈接、表單和圖片資源的窗體,對于可下載的資源(如超鏈接和圖片資源),將以復選列表框的形式供用戶選擇,并可調(diào)用網(wǎng)際快車和網(wǎng)絡(luò)螞蟻進行相關(guān)資源的下載,顯示可下載資源的窗體效果如圖4所示:調(diào)用網(wǎng)際快車下載相關(guān)資源的界面如圖5所示:對于腳本和表單資源,該窗體將以文本框的形式顯示其代碼,如圖6所示:在VB6中創(chuàng)建COM非常方便,單擊“文件”菜單的“新建工程”子菜單,在彈出的“新建工程”窗體中選擇“ActiveXDLL”項,系統(tǒng)隨后將自動添加一個COM組件的類模塊。在注冊表的“HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\MenuExt”下建立新項,命名為“資源分析”,值為對應的腳本文件。然后在該項中建立一個DWORD鍵“Contexts”,值為0xf3(即單擊頁面時顯示該菜單項)。在VB6中單擊“文件”菜單的“新建工程”子菜單,在彈出的“新建工程”窗體中選擇“ActiveXDLL”。系統(tǒng)將自動添加類模塊,將該工程命名為“Websource”、將類模塊命名為“WebClass”,隨后添加一個窗體,命名為“Formweb”,此時的工程資源管理器如圖7所示:添加“MicrosoftTabbedDialogControl6.0”控件,然后在窗體上放置一個SSTab控件并新建二個選項卡,二個按鈕控件,二個單選框控件,二個列表框控件,二個文本框控件和二個標簽控件,如圖8和圖9所示:按下表設(shè)置各控件屬性(控件大小、位置讀者可自行設(shè)置),其他為默認值。控件名稱和類型屬性名稱屬性值備注Formweb:FormBorderStyle3FixedDialogCaptionHTML資源分析MaxButton0FalseMinButton0FalseStartUpPosition2屏幕中心SSTab1:SSTabTabs2Tab1TabsPerRow2TabCaption(0)腳本代碼及窗體控件TabCaption(1)圖片及鏈接cmdflashget:CommandButtonCaption使用網(wǎng)際快車下載cmdnetant:CommandButtonCaption使用網(wǎng)絡(luò)螞蟻下載Option2:OptionButtonCaption鏈接Option1:OptionButtonCaption圖片Lstlink:ListBoxStyle1Checkboxlstimage:ListBoxStyle1Checkboxtxtform:TextBoxMultiLine-1TrueScrollBars3Bothtxtscript:TextBoxMultiLine-1TrueScrollBars3BothLabel2:LabelCaption窗體控件:Label1:LabelCaption腳本代碼:輸入窗體的程序代碼,首先定義全局變量,代碼如下所示:PublicstrurlAsString'存放網(wǎng)址的變量輸入各控件事件和自定義過程代碼,如下所示:'使用網(wǎng)際快車下載圖片的過程Subuseflashdownpic()OnErrorResumeNextDimJetCarCatchAsObjectDimi,jAsInteger'創(chuàng)建網(wǎng)際快車對象SetJetCarCatch=CreateObject("JetCar.Netscape")IfErr<>0ThenMsgBox"未正確安裝網(wǎng)際快車!"Else'遍歷列表框,獲取選擇的圖片j=0Fori=0Tolstimage.ListCount-1Iflstimage.Selected(i)=TrueThenj=j+1EndIfNextiReDimparams(j*2)params(0)=strurlj=0Fori=0Tolstimage.ListCount-1Iflstimage.Selected(i)=TrueThenparams(j*2+1)=lstimage.List(i)params(j*2+2)="圖片"j=j+1EndIfNextI'調(diào)用網(wǎng)際快車進行下載JetCarCatch.AddUrlListparamsEndIfEndSub'使用網(wǎng)絡(luò)螞蟻下載圖片的過程Subuseantdownpic()OnErrorResumeNextDimNetAntsApiAsObjectDimi,jAsInteger'創(chuàng)建網(wǎng)絡(luò)螞蟻對象SetNetAntsApi=CreateObject("NetAnts.API")IfErr<>0ThenMsgBox"未正確安裝網(wǎng)絡(luò)螞蟻!"Else'遍歷列表框,獲取選擇的圖片j=0Fori=0Tolstimage.ListCount-1Iflstimage.Selected(i)=TrueThenj=j+1EndIfNextiReDimparams(j*2)params(0)=strurlj=0Fori=0Tolstimage.ListCount-1Iflstimage.Selected(i)=TrueThenparams(j*2+1)=lstimage.List(i)params(j*2+2)="圖片"j=j+1EndIfNextI'調(diào)用網(wǎng)絡(luò)螞蟻進行下載NetAntsApi.AddUrlListparamsEndIfEndSub'使用網(wǎng)際快車下載鏈接的過程Subuseflashdownlink()OnErrorResumeNextDimJetCarCatchAsObjectDimi,jAsIntegerSetJetCarCatch=CreateObject("JetCar.Netscape")IfErr<>0ThenMsgBox"未正確安裝網(wǎng)際快車!"Elsej=0Fori=0Tolstlink.ListCount-1Iflstlink.Selected(i)=TrueThenj=j+1EndIfNextiReDimparams(j*2)params(0)=strurlj=0Fori=0Tolstlink.ListCount-1Iflstlink.Selected(i)=TrueThenparams(j*2+1)=lstlink.List(i)params(j*2+2)="鏈接"j=j+1EndIfNextiJetCarCatch.AddUrlListparamsEndIfEndSub'使用網(wǎng)絡(luò)螞蟻下載鏈接的過程Subuseantdownlink()OnErrorResumeNextDimNetAntsApiAsObjectDimi,jAsIntegerSetNetAntsApi=CreateObject("NetAnts.API")IfErr<>0ThenMsgBox"未正確安裝網(wǎng)絡(luò)螞蟻!"Elsej=0Fori=0Tolstlink.ListCount-1Iflstlink.Selected(i)=TrueThenj=j+1EndIfNextiReDimparams(j*2)params(0)=strurlj=0Fori=0Tolstlink.ListCount-1Iflstlink.Selected(i)=TrueThenparams(j*2+1)=lstlink.List(i)params(j*2+2)="鏈接"j=j+1EndIfNextiNetAntsApi.AddUrlListparamsEndIfEndSub'“使用網(wǎng)際快車下載”按鈕單擊事件過程PrivateSubcmdflashget_Click()OnErrorResumeNextIfOption1.value=TrueThenCalluseflashdownpicElseCalluseflashdownlinkEndIfEndSub'“使用網(wǎng)絡(luò)螞蟻下載”按鈕單擊事件過程PrivateSubcmdnetant_Click()OnErrorResumeNextIfOption1.value=TrueThenCalluseantdownpicElseCalluseantdownlinkEndIfEndSub窗體代碼輸入完畢后,在工程資源管理器中切換至類模塊并輸入代碼。由于類模塊包含的過程一般需供外部程序調(diào)用,因此均定義為“Public”類型。按程序的功能要求,可得該類模塊的方法設(shè)計,如下所述:a、顯示窗體的方法。b、添加網(wǎng)址的方法。c、添加腳本、鏈接和圖片的方法。d、添加表單和相關(guān)控件的方法。按類模塊方法設(shè)計編制代碼,如下所示:'類的初始化事件PrivateSubClass_Initialize()'裝載但不顯示窗體LoadFormwebEndSub'顯示窗體的過程PublicSubshowform()Formweb.Show1EndSub'添加網(wǎng)址的過程PublicSubaddurl(ByValurlAsString)'將網(wǎng)址傳遞至窗體的全局變量Formweb.strurl=urlEndSub'添加腳本的過程PublicSubaddscript(ByValscriptAsString)Formweb.txtscript.SelText=script+vbCrLfEndSub'添加鏈接的過程PublicSubaddlink(ByVallinkAsString)DimjAsIntegerDimsameAsBooleansame=False'遍歷窗體的列表框,以免重復添加WithFormwebForj=0To.lstlink.ListCount-1If.lstlink.List(j)=linkThensame=TrueExitForEndIfNextjIfsame=FalseThen.lstlink.AddItemlink.lstlink.Selected(.lstlink.NewIndex)=TrueEndIfEndWithEndSub'添加圖片的過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年硫精砂合作協(xié)議書
- 2025年角質(zhì)溶解藥項目建議書
- 合作水鉆租賃合同范本
- 代發(fā)產(chǎn)品合同范例
- 廚房餐具購銷合同范本
- 農(nóng)村電表更換合同范本
- 裝修民居返租合同范本
- 合伙生意轉(zhuǎn)讓合同范本
- 鐵棚施工合同范本
- 合作股票入股合同范本
- 學術(shù)論文寫作與規(guī)范課件
- 口腔診所藥品管理制度
- 中醫(yī)子午流注十二時辰養(yǎng)生法
- 養(yǎng)老院風險管控手冊
- 標準田字格帶拼音模板空白A4直接打印
- 小學語文 部編版 六年級下冊 第二單元 習作《寫作品梗概》
- 4.7 數(shù)學建?;顒樱荷L規(guī)律的描述教學設(shè)計
- 余杭區(qū)住宅房屋裝修備案申請表
- 住宅建筑工程施工重點與難點應對措施方案
- 中醫(yī)婦科病證診斷療效標準
- 護士職業(yè)素養(yǎng)課件
評論
0/150
提交評論