VC++开发BHO 插件—定制浏览器 在 Windows 操作系统上,我们最常见的浏览器有两种:文件浏览器(exploer
exe,应用于文件系统)和 Internet 浏览器(iexplore
exe,应用于互联网资源)
由于这两个浏览器功能强大,而且又与 Windows 操作系统捆绑销售,最终也就成为了浏览器的标准
但有时候,为了给浏览器加入一些新的特性,我们往往会重新设计一个自己的浏览器
新的浏览器模仿标准浏览器的大部分功能,同时加入新特性
这种做法最直观,但实际上也是相对于微软的重复劳动,且工作量比较大
其实,使用 BHO 插件,一切都变得很简单
BHO(Browser Help Objects),是实现了特定接口的 COM 组件
开发好的 BHO 插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO 实例就会被创建
在浏览器工作的工程中,BHO 会接收到很多事件,比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等;BHO 可以在这些事件的响应中实现与浏览器的交互
下面,我们首先来介绍一下 BHO 的工作原理
上面我们已经提到,BHO 是 COM 组件,而且一定实现了 IObjectWithSite 接口
这些组件除了在注册表中注册为 COM Server 外,还必须 将 它 们 的CLSID在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Explorer\Browser Helper Objects 下注册为子键
微软在设计浏览器的时候,已经给这些组件预留了空间
每当浏览器启动时,浏览器会首先在上述注册表位置查看是否有注册的 BHO CLSID;如果有则分别创建一个实例,并对 BHO 实例进行初始化,建立交互连接
(注:BHO 实例只有在创建它的浏览器窗口销毁时