欢迎来到天天文库
浏览记录
ID:37313769
大小:484.52 KB
页数:13页
时间:2019-05-21
《BHO插件开发入门》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录一,BHO开发概述31.1BHO的用途及实际应用31.2BHO的工作原理及技术环境3二,框架设计42.1构建BHO框架42.2实现IObjectWithSite的接口方法5三,注销SESSION73.1将BHO注册为浏览器的事件处理器73.2监听浏览器关闭事件,并向Server发送跳转指令83.3关闭BHO注销页面93.4阻止文件浏览器加载BHO93.5向注册表中注册BHO组件10四,打包发布104.1BHO打包和找到关联Dll文件104.2编写自动安装脚本inf文件114.3用cabarc工具打包。12-13-一,BHO开发概述1.1BHO的用途及实际应用BHO(Br
2、owserHelpObjects),是实现了特定接口的COM组件。BHO只适用于Windows系统下的IE浏览器和文件浏览器。开发好的BHO插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览器工作的过程中,BHO会接收到很多事件,比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等。BHO可以在这些事件的响应中实现与浏览器的交互。本文档中我们将通过编写一个BHO实例来详细讲解BHO开发的一般流程。该实例的功能是:当用户成功登陆网站后,如果用户点击IE关闭按钮,BHO将捕获IE关闭事件,同时向Server发送一个注销当前用户Sess
3、ion的请求。Server注销后跳转到BHO注销页面,BHO捕获到BHO注销页面时,关闭该页面。1.2BHO的工作原理及技术环境BHO是COM组件,而且一定实现了IObjectWithSite接口。这些组件除了在注册表中注册为COMServer外,还必须将它们的CLSID在HKEY_LOCAL_MACHINESOFTWAREWindowsCurrentVersionExplorerBrowserHelperObjects下注册为子键。微软在设计浏览器的时候,已经给这些组件预留了空间。每当浏览器启动时,浏览器会首先在上述注册表位置查看是否有注册的BHO-13-CLS
4、ID;如果有则分别创建一个实例,并对BHO实例进行初始化,建立交互连接。(注:BHO实例只有在创建它的浏览器窗口销毁时才被释放。)图1.1演示了BHO的创建过程:图1.1表1.1BHO支持的操作系统一览及IE一览IE版本操作系统版本支持BHO4.00Windows95andWindowsNT4.0仅IE4.05.00Windows2000IE和文件浏览器6.00WindowsXPIE和文件浏览器7.00VistaIE和文件浏览器二,框架设计2.1构建BHO框架n开发环境:MicrosoftVisualC++6.0n步骤1:建立一个工作区(WorkSpace)。n步骤2:在工
5、作区中,建立一个ATL工程(Project)。示例程序叫TEST,并选择DLL方式,见图2.1。-13-图2.1n步骤3:增加ATL对象类。在菜单InsertNewATLObject...(或者用鼠标右键在ClassView卡片中弹出菜单)并选择Object分类,选中InternetExploer项目。见图2.2。图2.2n步骤4:填写COM类的名称。只要输入ShortName,其它自动生成。见图2.3。-13-图2.32.2实现IObjectWithSite的接口方法n步骤1:先定义几个成员变量:CComQIPtr6、er2>mWebBrowser2,(需要加入#include"ExDisp.h"),用以保存浏览器组件的指针;DWORDmCookie,用以保存与浏览器的连接ID。见图2.4变量声明图2.4(详见MyBho.h文件)n步骤2:IObjectWithSite有两个接口方法:SetSite和GetSite。我们只需重载SetSite就行了。在ImyBho中增加函数声明SetSite函数。见图2.5-13-图2.5n步骤3:实现IDispatch接口方法。事件处理也就在IDispatch::Invoke中实现(各个事件的ID在ExDispID.h中定义)。BHO可能会接收到很多事7、件,但我们只需要响应我们感兴趣的那一部分。首先在ImyBho中增加该函数的声明。见图2.6图2.6n步骤4:ImyBho添加RegisterEventHandler(BOOLinAdvise)方法声明,实现向IE注册和注销事件。详见附录代码。通过上面的步骤,一个基本的BHO对象框架已经建立起来了。下一节来我们将根据具体要实现的功能(向Server发送注销Session命令)对代码主要功能作说明。三,注销Session3.1将BHO注册为浏览器的事件处理器注册BHO的事件的工作主要在SetSite函数中来完成。首先保
6、er2>mWebBrowser2,(需要加入#include"ExDisp.h"),用以保存浏览器组件的指针;DWORDmCookie,用以保存与浏览器的连接ID。见图2.4变量声明图2.4(详见MyBho.h文件)n步骤2:IObjectWithSite有两个接口方法:SetSite和GetSite。我们只需重载SetSite就行了。在ImyBho中增加函数声明SetSite函数。见图2.5-13-图2.5n步骤3:实现IDispatch接口方法。事件处理也就在IDispatch::Invoke中实现(各个事件的ID在ExDispID.h中定义)。BHO可能会接收到很多事
7、件,但我们只需要响应我们感兴趣的那一部分。首先在ImyBho中增加该函数的声明。见图2.6图2.6n步骤4:ImyBho添加RegisterEventHandler(BOOLinAdvise)方法声明,实现向IE注册和注销事件。详见附录代码。通过上面的步骤,一个基本的BHO对象框架已经建立起来了。下一节来我们将根据具体要实现的功能(向Server发送注销Session命令)对代码主要功能作说明。三,注销Session3.1将BHO注册为浏览器的事件处理器注册BHO的事件的工作主要在SetSite函数中来完成。首先保
此文档下载收益归作者所有