999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用托管代碼制作瀏覽器擴展控件

2008-01-01 00:00:00
智能計算機與應用 2008年3期

摘要:提出了一個使用托管代碼來制作BHO的方案。

關鍵詞:BHO COM Interoperability COM .NET控件 .NET Framework

中圖分類號:TP393 文獻標識碼:B 文章編號:1002-2422(2008)03-0047-02

1 瀏覽器框架和BHO組件

BHO是一種特殊的COM組件,利用這樣的組件可以定制并控制IE的運行。IE在啟動時首先檢查系統注冊表中的注冊鍵,根據注冊鍵所提供的信息,加載相應的BHO組件,生成好的BHO組件對象能夠訪問當前瀏覽會話中的所有事件和屬性。BHO是以WebBrowser控件為基礎的托管組件,利用WebBrowser控件捕捉IE相關事件,當事件發生時,轉入到BHO中的事件處理程序,從而改變IE的行為。

2 COM Interolaerability

微軟在推出.NET平臺之后,將程序分成了兩大類,第一類被稱成非托管程序:第二類稱為托管程序,托管程序是運行在,NET平臺之上,與非托管程序不同的是,托管程序不是直接編譯成機器碼,而是編譯成中間碼,稱為IL(In-termediate Language)。需要使用Interoperability技術在托管程序和非托管程序中間建立起一個橋梁。Interoperability技術包括兩部分:第一部份是P/Invoke技術,通過這種技術可以在托管程序中直接訪問Win32 API,或非托管的動態鏈接庫(Dr_L):第二部份是COM Interop,允許托管程序通過COM接口來實現兩者的互訪,這兩者的通訊包括了非托管代碼COM控件調用托管代碼和托管代碼調用非托管代碼,BHO則使用后者來完成操作。

COM控件與.NET控件有著不同的結構體系,兩者不能直接通信。.NET控件需要使用一個稱為RCW(RuntimeCallable Wrapper)的組件來調用COM控件。可以把RCW看作是COM控件的托管代理。可以使用兩種方法產生RCW:第一種方法是使用Tlbimp(Type Library Imlorter)工具把COM控件中的類型定義信息轉換成.NET模式下的類型定義,最終得到一個同名的托管控件;第二種方法是使用VS.NET IDE自動把一個屬于COM的DLL文件轉換為,NET下的DLL。RCW是一個托管控件,是由運行環境(CLR)來控制其生命周期,當CLR中的垃圾器開始回收RCW時,RCW在內部調用代理的COM控件中的Release方法來釋放COM控件。

當COM控件調用.NET控件時,要求.NET控件遵循COM規范來保證有效的通訊,在.NET控件中,使用inter-face來表示COM中的接口,定義接口類型,而使用class來完成接口中所規定的任務,.NET控件作為一個托管控件不能直接和COM控件打交道,當COM控件要求調用.NET控件時,是通過一個非托管中間層來完成通訊任務。這個非托管中間層被稱為CCW(COM callable wrapper),運行環境從.NET控件中讀取類型信息并產生相應的CCW。CCW作為.NET控件和非托管COM控件的中間層,把.NET控件展示給COM控件。

托管控件要按照COM規范,首先創建GUID(Global-lyUnique Identifier)用來標識一個托管控件,使用GUID屬性在托管代碼中添加GUID。其次要對生成的托管代碼使用強簽名,強簽名是一種使用密碼技術對程序集進行數字簽名,其目的是用來標識一個控件,與其它控件得以區分。C-OM規范還要求控件在使用前必須要注冊,托管代碼中使用ComRegisterFunetionAttribute屬性和ComUnregisterFuncfion屬性來標識注冊控件的方法。

3 托管BHO

(1)托管BHO類的完成:首先使用IDE添加COM控件功能,引入WebBrowser控件,允許托管BHO調用Web-Browser控件;其次按照BHO控件標準實現IObieetWithSite接口,該接口很簡單的定義了兩個方法:SetSite和GetSite。主要利用SetSite方法,而GetSte沒有特定代碼。當BHO控件被調用時,要調用控件的Setsite方法,在Setsite方法中,可以完成BHO的初始化工作,使用Delegate添加特定的事件處理程序,例中對WebBmwser控件的三個事件進行了截獲,代碼如下:

(2)托管BHO簽名:為了區分托管控件與其它的控件,必須要對新的托管BHO進行簽名,使用SN工具生成一對公有和私有Key文件,然后在IDE7中編譯選項中添加Key文件,完成數字簽名工作。

(3)托管BHO注冊:為了讓托管BHO控件能被其它COM控件訪問,必須要使用Regasm工具在系統中的注冊表進行登記,Regasm工具檢查托管BH0中使用特定屬性標識的注冊函數和卸載函數,注冊函數主要任務是使用Win32 API函數對注冊表中相應的鍵值進行修改。IE啟動時,先要根據注冊表中HKEY_LOCALMACHINEk%hware\\Micmsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper O-bjects鍵中的信息依次加載BHO;其次托管BHO要在該鍵值下進行登記,代碼如下:

(4)托管BHO調試:托管BHO的調試相對比較復雜,先要運行一個IE進程,然后使用IDE中的附加進程功能,選擇運行中的IE進程,最后進行BHO的斷點調試。

4 運行結果

當托管BHO安裝成功后,可在IE中“管理加載項”中查看。當用戶試圖訪問受限網站,例如訪問http://www.ehi-nagames.net網站,托管BHO截獲URL,將URL與設定好的關鍵詞相比較,檢查到URL包含Game關鍵詞,于是停止瀏覽,同時在地址欄顯示提示信息。

主站蜘蛛池模板: 超碰免费91| 色欲不卡无码一区二区| 亚洲成网站| 四虎永久免费网站| 伊人久久婷婷五月综合97色| 亚洲国产中文精品va在线播放| 欧美日韩专区| 国产成人你懂的在线观看| 一级毛片中文字幕| 91免费观看视频| 免费一级毛片在线观看| 欧美亚洲另类在线观看| 伊人久久综在合线亚洲2019| 美女无遮挡拍拍拍免费视频| 尤物亚洲最大AV无码网站| 亚洲娇小与黑人巨大交| 国产精品入口麻豆| 97成人在线观看| 99视频精品全国免费品| 天天操精品| 最新精品久久精品| 香蕉eeww99国产在线观看| 亚洲 欧美 日韩综合一区| 性喷潮久久久久久久久| 国产成人AV男人的天堂| 91在线一9|永久视频在线| 国产精品无码久久久久AV| 九九香蕉视频| 欧美性精品不卡在线观看| 亚洲精品动漫在线观看| 在线看片中文字幕| 亚洲爱婷婷色69堂| 久草视频中文| 夜夜爽免费视频| 国产激情无码一区二区免费| 一本大道香蕉久中文在线播放 | 久久人搡人人玩人妻精品| 亚洲区第一页| 久久a毛片| 亚洲最大福利网站| 午夜人性色福利无码视频在线观看| 欧美高清视频一区二区三区| 国产欧美视频综合二区| 国产精品冒白浆免费视频| 精品国产一区91在线| 亚洲视频免费在线看| 丁香六月综合网| 国产精品第5页| 国产swag在线观看| 热99精品视频| 亚欧乱色视频网站大全| 丝袜久久剧情精品国产| 99视频精品全国免费品| 国产精品99久久久久久董美香| 日韩少妇激情一区二区| 97精品久久久大香线焦| 亚欧美国产综合| 亚洲αv毛片| 日韩国产综合精选| 美女毛片在线| 思思热精品在线8| 免费a在线观看播放| 国内精品手机在线观看视频| 久久这里只有精品66| 欧美笫一页| 国产激爽大片高清在线观看| 日韩欧美91| 亚洲国产清纯| 成人毛片免费在线观看| 中文精品久久久久国产网址| 亚洲美女视频一区| 四虎永久在线精品国产免费| 99一级毛片| 99热这里只有精品国产99| 国产综合无码一区二区色蜜蜜| 久久亚洲高清国产| 熟女日韩精品2区| 国产成本人片免费a∨短片| 久久久久九九精品影院| 国产视频欧美| 精品亚洲麻豆1区2区3区| 永久天堂网Av|