打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于BHO技术
一,BHO开发概述
1.1  BHO的用途及实际应用
1.2  BHO的工作原理及技术环境
二,框架设计
2.1 构建BHO框架
2.2实现IObjectWithSite的接口方法
三,注销Session
3.1将BHO注册为浏览器的事件处理器
3.2监听浏览器关闭事件,并向Server发送跳转指令
3.3关闭BHO注销页面
3.4阻止文件浏览器加载BHO
3.5向注册表中注册BHO组件
四,打包发布
4.1 BHO打包和找到关联Dll文件
4.2编写自动安装脚本inf文件
4.3用cabarc工具打包。
的用途及实际应用
BHO(Browser Help Objects),是实现了特定接口的COM组件。BHO只适用于Windows系统下的IE浏览器和文件浏览器。开发好的BHO插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览器工作的过程中,BHO会接收到很多事件,比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等。BHO可以在这些事件的响应中实现与浏览器的交互。
本文档中我们将通过编写一个BHO实例来详细讲解BHO开发的一般流程。该实例的功能是:当用户成功登陆网站后,如果用户点击IE关闭按钮,BHO将捕获IE关闭事件,同时向Server发送一个注销当前用户Session的请求。Server注销后跳转到BHO注销页面,BHO捕获到BHO注销页面时,关闭该页面。
的工作原理及技术环境
BHO是COM组件,而且一定实现了IObjectWithSite接口。这些组件除了在注册表中注册为COM Server外,还必须将它们的CLSID在HKEY_LOCAL_MACHINE\SOFTWARE\ Windows\ CurrentVersion\    Explorer\Browser Helper Objects下注册为子键。微软在设计浏览器的时候,已经给这些组件预留了空间。每当浏览器启动时,浏览器会首先在上述注册表位置查看是否有注册的 BHO CLSID;如果有则分别创建一个实例,并对BHO实例进行初始化,建立交互连接。(注:BHO实例只有在创建它的浏览器窗口销毁时才被释放。)图1.1演示了BHO的创建过程:
图1.1
表1.1  BHO支持的操作系统一览及IE一览
IE版本
操作系统版本
支持BHO
4.00
Windows 95 and Windows NT 4.0
仅IE4.0
5.00
Windows2000
IE和文件浏览器
6.00
WindowsXP
IE和文件浏览器
7.00
Vista
IE和文件浏览器
构建BHO框架
n         开发环境: Microsoft Visual C++ 6.0
n         步骤1:建立一个工作区(WorkSpace)。
n         步骤2:在工作区中,建立一个 ATL 工程(Project)。示例程序叫TEST,并选择DLL方式,见图2.1。
图2.1
n         步骤3:增加ATL对象类。在菜单 Insert\New ATL Object...(或者用鼠标右键在 ClassView 卡片中弹出菜单)并选择Object 分类,选中 Internet Exploer 项目。见图2.2。
图2.2
n         步骤4:填写COM类的名称。只要输入Short Name,其它自动生成。见图2.3。
图2.3
实现IObjectWithSite的接口方法
n         步骤1:先定义几个成员变量:CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> mWebBrowser2,(需要加入#include "ExDisp.h"),用以保存浏览器组件的指针;DWORD mCookie,用以保存与浏览器的连接ID。见图2.4
变量声明
图2.4(详见MyBho.h文件)
n         步骤2:IObjectWithSite有两个接口方法:SetSite和GetSite。我们只需重载 SetSite就行了。在ImyBho中增加函数声明SetSite函数。见图2.5
图2.5
n         步骤3: 实现IDispatch接口方法。事件处理也就在IDispatch::Invoke中实现(各个事件的ID在ExDispID.h中定义)。 BHO可能会接收到很多事件,但我们只需要响应我们感兴趣的那一部分。首先在ImyBho中增加该函数的声明。见图2.6
图2.6
n         步骤4: ImyBho添加RegisterEventHandler(BOOL  inAdvise)方法声明,实现向IE注册和注销事件。详见附录代码。
通过上面的步骤,一个基本的BHO对象框架已经建立起来了。下一节来我们将根据具体要实现的功能(向Server发送注销Session命令)对代码主要功能作说明。
将BHO注册为浏览器的事件处理器
注册BHO的事件的工作主要在SetSite函数中来完成。首先保存浏览器指针到mWebBrowser2成员变量中去。然后调用RegisterEventHandler函数向浏览器注册为事件处理器。见图3.1
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VC++开发BHO插件——定制你的浏览器
CSDN技术中心 VC++开发BHO插件——定制你的浏览器
C++中使用BHO来屏蔽特定网站
定制Internet Explorer扩展界面接口
使用 DotNet 编写浏览器外挂. NetBHO .
IE终于被抛弃了:但微软新浏览器依旧难逃开放和封闭困境
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服