BHO就是Browser Helper Object(瀏覽器輔助對(duì)象)
BHO關(guān)聯(lián)原理 (BHO關(guān)聯(lián)的是SHDOCVW,也就是說不只關(guān)聯(lián)IE,下面全部用IE來(lái)說明)
1.IE的窗口打開時(shí),先尋找HKLM下的SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\ 里的CLSID,這些CLSID,都對(duì)應(yīng)著相應(yīng)的BHO插件,然后根據(jù)這個(gè)CLSID到HKCR下的CLSIDs里找到此插件的信息,包括文件位置等。
2.IE根據(jù)找到的CLSID信息創(chuàng)建 BHO 對(duì)象,并且查找 IObjectWithSite 接口. (這個(gè)接口非常簡(jiǎn)單,只有SetSite和GetSite兩個(gè)方法)
3.IE把IWebBrowser2(瀏覽器插件)傳到 BHO 的 SetSite 方法,用戶在此方法中可掛載自己的事件處理方法。
4.窗口關(guān)閉時(shí),IE把 null 傳到 BHO 的 SetSite 方法,此方法用來(lái)去掉掛載的事件處理方法。
編寫B(tài)HO流程
1.創(chuàng)建IObjectWithSite顯式接口,創(chuàng)建 COM 類型,實(shí)現(xiàn)繼承IObjectWithSite接口
2.實(shí)現(xiàn)此接口并在SetSite方法里加上所要掛載的事件
3.處理事件
4.注冊(cè)此BHO到注冊(cè)表中HKLM下的Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects;(HKCR下的CLSIDs是根據(jù)上面的路徑自動(dòng)注冊(cè)的)
5、.net 下須設(shè)置此BHO項(xiàng)目的 配置屬性_>生成 中為Interop注冊(cè)為True,這樣才能將.net 類庫(kù)文件注冊(cè)到COM
刪除BHO
打開注冊(cè)表項(xiàng)到:HKLM下的Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects 可以看到下面有一些CLSID值,這些值對(duì)應(yīng)相關(guān)的插件,點(diǎn)擊可以在默認(rèn)值后看到相關(guān)插件的名稱!可以復(fù)制相關(guān)CLSID到注冊(cè)表中搜索相關(guān)CLSID,找到后打開InprocServer32可以看到相關(guān)文件的路徑,至于DLL文件等可以用UEDIT32.exe工具打開查看具體信息,當(dāng)然也可以用修改程序類的eXeScope.exe研究一下!
請(qǐng)根據(jù)具體情況刪除相關(guān)鍵值和相關(guān)文件!
REF:
BHO 的編寫
VCKBase 關(guān)于IE 編程文檔中心
C++中使用BHO來(lái)屏蔽特定網(wǎng)站
瀏覽器集成教學(xué) 自定義瀏覽器