當前位置:編程學習大全網 - 編程語言 - Delphi開發嵌入式IE瀏覽器監控程序

Delphi開發嵌入式IE瀏覽器監控程序

引 言

 隨著網絡的發展和普及,對網絡的監控日益成為網絡安全的必然要求,也是管理和維護網絡的壹個有效手段。當前已經有多種應用比較廣泛的網絡監控和過濾程序,如美萍網管、we-blocker等,它們都可以實現基於網絡URL和IP地址的監控和過濾功能。

 本文將對如何開發壹個嵌入到IE瀏覽器中的監控程序進行介紹,該程序可以根據網絡URL和IP地址進行監控和過濾,並且記錄系統日誌,從而使妳對IE(當然是使用它的用戶)的所有操作壹覽無余。相信通過閱讀本文,會加深妳對網絡監控程序的理解,以及提高妳的COM編程能力和數據庫編程能力。

 本文在Delphi 6開發環境下實現,數據庫使用桌面數據庫Access 2000。

 基礎知識

 1.COM編程

 COM(Component Object Model,組建對象模型)是微軟公司(Microsoft Company)提出的二進制通信規範,用於軟件組件之間的跨越多個進程、機器、硬件和操作系統的互操作,它是壹項通過接口(Interface)透明的傳遞封裝數據的技術,並且獨立於語言和操作平臺。壹個COM對象是實現壹個或者若幹個接口的對象,即COM對象借助接口輸出它所提供的服務。

 2.IE瀏覽器的體系結構

 IE瀏覽器的體系結構如圖1所示。其中MSHTML是位於SHDOCVW和HTML頁面之間的COM對象,SHDOCVW對象用於處理頁面的顯示,而MSHTML用於處理頁面的語法分析,並且將頁面中的標記轉換為元素。MSHTML是壹個COM服務器,允許COM客戶端程序訪問它對外提供的服務。

 實現IE瀏覽器嵌入式編程的基本方法是建立COM對象,從而以COM客戶端程序的形式和MSHTML COM服務器建立連接,然後通過接口回調實現需要的控制功能。也即首先建立COM對象,實現系統規定的若幹接口,然後註冊COM對象,並且將COM對象的有關信息寫入到IE瀏覽器擴展功能指定的註冊表位置。

嵌入式IE瀏覽器監控程序的實現

 嵌入式IE瀏覽器監控程序的實現主要包括監控程序的實現和維護程序的實現兩部分,根據程序開發過程,可以將其分為四個步驟,下面分別對各個實現步驟進行詳細介紹。

 1.實現COM對象

 開發COM對象的任務就是建立壹個能夠與IE瀏覽器的MSHTML COM服務器建立連接並且通過接口回調實現控制功能的COM對象,具體實現過程如下:

 (1)運行Delphi,依次點擊File|New|Other,切換到ActiveX頁面,選擇ActiveX Library,點擊OK按鈕,即建立壹個新的工程。

 (2) 再次點擊File|New|Other,切換到ActiveX頁面,選擇COM Object,點擊OK按鈕,即出現如圖2所示的COM Object Wizard界面,去掉Included Type Library復選框,在Class Name中輸入COM對象的名稱IEMonitor,然後點擊OK按鈕,即新建了壹個名稱為TIEMonitor的COM對象(該COM對象的CLSID由系統自動生成)。

(3)將工程和單元文件依次保存為DIEMonitor.dpr和UIEMonitor.pas。切換到UIEMonitor.pas單元文件,我TIEMonitor的定義形式如下:

TIEMonitor = class(TComObject, IDispatch, IObjectWithSite)

public

function GetTypeInfoCount(out Count:Integer):HResult;stdcall;

function GetTypeInfo(Index,LocaleID:Integer;out TypeInfo):HResult;stdcall;

function GetIDsOfNames(const IID:TGUID;Names:Pointer;

NameCount,LocaleID:Integer;DispIDs:Pointer):HResult;stdcall;

function SetSite(const pUnkSite:IUnknown):HResult;stdcall;

function GetSite(const riid:TIID;out site:IUnknown):HResult;stdcall;

function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;

Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;

private

IEThis:IWebBrowser2;

Cookie:Integer;

protected

end;

 註意在UIEMonitor.pas單元文件的Uses中需要手動加入對SHDOCVW, Dialogs, SysUtils, Forms的引用。

 其中主要是對IObjectWithSite接口的SetSite()方法和IDispatch接口的Invoke()方法的實現:首先通過SetSite()方法獲得IE的WebBrowser接口,然後尋找連接點,並且通過調用Advise()方法建立COM自身與連接點的連接;當連接建立成功後,IE在事件引發後,會調用連接到自身的IDispatch接口對象的Invoke方法,不同的事件對應不同的DispID編碼,因此可以通過在程序中判斷DispID對不同的事件做出相應的處理。系統主要對BeforeNavigate2、DownLoadComplete和OnQuit三個事件進行處理,它們對應的DispID分別為250、104和253。在Invoke()方法中,根據DispID分別調用DoBeforeNavigate2()、DoDownLoadComplete()和DoOnQuit()函數實現相關處理和控制功能,具體實現詳見程序源代碼。

 (4)編譯工程,生成DIEMonitor.dll文件。

  • 上一篇:自己怎麽做網站,怎樣免費做網站?
  • 下一篇:新加坡高中課程有哪些
  • copyright 2024編程學習大全網