BHO.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BHO

VC++开发BHO插件 在Windows操作系统上,我们最常见的浏览器有两种:文件浏览器 (exploer.exe,应用于文件系统)和Internet 浏览器 (iexplore.exe,应用于互联网资源)。由于这两个浏览器功能强大,而且又与Windows操作系统捆绑销 售,最终也就成为了浏览器的标准。但有时候,为了给浏览器加入一些新的特性,我们往往会重新设计一个 自己的浏览器。新的浏览器模仿标准浏览器的大部分功能,同时加入新特性。这种做法最直观,但实际上也 是相对于微软的重复劳动,且工作量比较大。其实,使用BHO插件,一切都变得很简单。 BHO (BrowserHelpObjects),是实现了特定接口的COM组件。开发好的BHO插件在注册表特定的位置注 册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览器工作的工程中,BHO会接收到很多事件, 比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等;BHO可以在这些事件的响应中实 现与浏览器的交互。 下面,我们首先来介绍一下BHO的工作原理。上面我们已经提到,BHO是COM组件,而且一定实现了 IObjectWithSite接口。这些组件除了在注册表中注册为COMServer外,还必须将它们的CLSID在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BrowserHelperObjects下 注册为子键。微软在设计浏览器的时候,已经给这些组件预留了空间。每当浏览器启动时,浏览器会首先在 上述注册表位置查看是否有注册的BHOCLSID;如果有则分别创建一个实例,并对BHO实例进行初始化, 建立交互连接。(注:BHO实例只有在创建它的浏览器窗口销毁时才被释放。)下图演示了BHO的创建过程: 成功创建的BHO,不仅可以得到各种标准的浏览器操作事件,并做出响应;还可以定制浏览器的菜单、工具 条等界面元素;更或者可以安装钩子函数,监视浏览器的一举一动。值得注意的是,使用BHO插件,Internet 浏览器要求在4.0 以上版本;如果是文件浏览器,操作系统要求是Windows95/98/2000或WindowNT4.0 以 上版本,并且Shell 的版本在4.71以上。下面是支持BHO特性的系统一览表: Shell版本 操作系统版本 支持BHO 4.00Windows95andWindowsNT4.0 (IE版本为 4.0) 仅IE4.0 4.71Windows95andWindowsNT4.0 (IE版本为 4.0) IE和文件浏览器 4.72Windows98IE和文件浏览器 5.00 Windows2000IE和文件浏览器 接下去,笔者就来介绍一下如何开发BHO插件,开发环境为VC6.0(使用ATL),安装PlatformSDK中的Internet DevelopmentSDK。首先,启动VC的ATLCOMAppWizard,生成一个项目名为BhoPlugin,其余均采用默认 设置。接着,我们就来分步详细阐述。 第一步,增加一个ATLObject到该项目中。VC菜单Insert-NewATLObject…,在弹出的对话框中选择“Internet ExplorerObject”,输入COM类名 (在ShortName后输入EyeOnIE,其它各项会自动生成)。完成后,我们可 以看到CEyeOnIE类有一个基类IObjectWithSiteImpl,这个就是实现IObjectWithSite接口的模版类。 第二步,实现IObjectWithSite的接口方法。在这之前,我们要先定义几个成员变量:CComQIPtrmWebBrowser2, (需要加入#includeExDisp.h),用以保存浏览器组件的指针;DWORDmCookie,用以保存与浏览器的连接 ID。IObjectWithSite有两个接口方法:SetSite和GetSite。我们只需重载SetSite就行了。在EyeOnIE.h 中增加 函数声明STDMETHOD(SetSite)(IUnknown*pUnkSite),在EyeOnIE.cpp实现如下: STDMETHODIMPCEyeOnIE::SetSite(IUnknown*pUnkSite) { USES_CONVERSION; if(pUnkSite) { mWebBrowser2 pUnkSite; if(mWebBrowser2) { returnRegisterEventHandler(TRUE);

文档评论(0)

qiaogao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档