BHO Browser Helper Objects
1 BHO更像是浏览器的一个插件。
2 BHO依靠于COM,所以他只对IE生效,对其他浏览器无效。
一 创建一个ATL DLL工程(RockBHO),生成的主要文件:
RockBHO.cpp 此源文件用于实现通过 DLL 提供 COM 对象的导出
RockBHO.idl 此源文件可用于定义自定义 COM 接口
RockBHO.rgs 此资源文件包含注册和取消注册 DLL 时编写和删除的注册表项
二 为工程添加类 -> ATL Simple Object
Shortname:MyRock
Apartment: No
Support: IObjectWithSite
生成的主要文件
MyRock.h 此头文件包含 BHO 的类定义
MyRock.cpp 此源文件是项目的主文件并且包含COM对象
三 重写SetSite
Internet Explorer 只调用此方法两次,一次用于建立连接,另一次则是在浏览器退出时。
a MyRock.h
b MyRock.cpp
四 重写DllMain
五 注册BHO,在RockBHO.rgs的末尾加上下面代码:
a 在注册表里添加一个双字节的NoExplorer=1的键,不让Windows Explorer加载该BHO,因此该BHO只能在ie中运行
b 实际上下面的格式就是注册表目录结构,HKLM是HKEY_LOCAL_MACHINE的缩写
c 我们要注册的是类的CLSID
六 简单的测试
a MyRock.h
b MyRock.cpp
七 调用IE DOM(删除所有Image)
a MyRock.h
b MyRock.cpp