- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BHO插件开发入门
目录
一,BHO开发概述 3
1.1 BHO的用途及实际应用 3
1.2 BHO的工作原理及技术环境 3
二,框架设计 4
2.1 构建BHO框架 4
2.2实现IObjectWithSite的接口方法 5
三,注销Session 7
3.1将BHO注册为浏览器的事件处理器 7
3.2监听浏览器关闭事件,并向Server发送跳转指令 8
3.3关闭BHO注销页面 9
3.4阻止文件浏览器加载BHO 9
3.5向注册表中注册BHO组件 10
四,打包发布 10
4.1 BHO打包和找到关联Dll文件 10
4.2编写自动安装脚本inf文件 11
4.3用cabarc工具打包。 12
一,BHO开发概述
1.1 BHO的用途及实际应用
BHO(Browser Help Objects),是实现了特定接口的COM组件。BHO只适用于Windows系统下的IE浏览器和文件浏览器。开发好的BHO插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览器工作的过程中,BHO会接收到很多事件,比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等。BHO可以在这些事件的响应中实现与浏览器的交互。
本文档中我们将通过编写一个BHO实例来详细讲解BHO开发的一般流程。该实例的功能是:当用户成功登陆网站后,如果用户点击IE关闭按钮,BHO将捕获IE关闭事件,同时向Server发送一个注销当前用户Session的请求。Server注销后跳转到BHO注销页面,BHO捕获到BHO注销页面时,关闭该页面。
1.2 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和文件浏览器
二,框架设计
2.1 构建BHO框架
开发环境: Microsoft Visual C++ 6.0
步骤1:建立一个工作区(WorkSpace)。
步骤2:在工作区中,建立一个 ATL 工程(Project)。示例程序叫TEST,并选择DLL方式,见图2.1。
图2.1
步骤3:增加ATL对象类。在菜单 Insert\New ATL Object...(或者用鼠标右键在 ClassView 卡片中弹出菜单)并选择Object 分类,选中 Internet Exploer 项目。见图2.2。
图2.2
步骤4:填写COM类的名称。只要输入Short Name,其它自动生成。见图2.3。
图2.3
2.2实现IObjectWithSite的接口方法
步骤1:先定义几个成员变量:CComQIPtrIWebBrowser2, IID_IWebBrowser2 mWebBrowser2,(需要加入#include ExDisp.h),用以保存浏览器组件的指针;DWORD mCookie,用以保存与浏览器的连接ID。见图2.4
图2.4(详见MyBho.h文件)
步骤2:IObjectWithSite有两个接口方法:SetSite和GetSite。我们只需重载 SetSite就行了。在ImyBho中增加函数声明SetSite函数。见图2.5
图2.5
步骤3: 实现IDispatch接口方法。事件处理也就在IDispatch::Invoke中实现(各个事件的ID在ExDispID.h中定义)。 BHO可能会接收到很多事件,但我们只需要响应我们感兴趣的那一部分。首先在ImyBho中增加该函数的声明。见图2.6
图2.6
步骤4: ImyBho添加RegisterEventHandler(BOOL inAdvise)方法声明,实现向IE注册和注销事件。详见附录代码。
通过上面的
您可能关注的文档
- 6 人员培训.ppt
- 6 MCS-51 第六章 中断.doc
- 6 第六讲 隔离开关和接地开关的开断和关合性能.doc
- 5主要的动物病原菌.ppt
- 6 悬架设计xg.ppt
- 6-1第一单元化学反应速率.doc
- 6-3第三单元化学平衡移动.doc
- 6-2 准静态过程 功 热量.ppt
- 6.3中国特色的政党制度1.ppt
- 6.χ2检验.ppt
- 部编版二年级下册道德与法治 期末考试试卷【夺冠】.docx
- 部编版二年级下册道德与法治 期末考试试卷【易错题】.docx
- 部编版二年级下册道德与法治 期末考试试卷【易错题】.docx
- 部编版二年级下册道德与法治 期末考试试卷【培优a卷】.docx
- 部编版二年级下册道德与法治 期末考试试卷【培优】.docx
- 部编版二年级下册道德与法治 期末考试试卷【名校卷】.docx
- 部编版二年级下册道德与法治 期末考试试卷【学生专用】.docx
- 部编版二年级下册道德与法治 期末考试试卷【基础题】.docx
- 部编版二年级下册道德与法治 期末考试试卷【全国通用】.docx
- 部编版二年级下册道德与法治 期末考试试卷ab卷.docx
文档评论(0)