到底什么是浏览器帮助程序对象 (BHO)
2008-03-10 18:49
465 查看
到底什么是浏览器帮助程序对象 (BHO)?简言之,BHO 是将自定义功能添加到 Internet Explorer 的轻型 DLL 扩展。BHO 还可以将功能添加到 Windows 资源管理器外壳程序(尽管这并不常见,也不是本文重点)。
BHO 通常并不提供其自身的任何用户界面 (UI)。它们而是通过在后台响应浏览器事件和用户输入数据来发挥作用。例如,BHO 可以拦截弹出窗口、自动填充窗体或为鼠标手势添加支持。有一种常见误解认为工具栏扩展项需要 BHO;但如果将 BHO 与工具栏配合使用,则可以实现更丰富的用户体验。
注意 BHO 对于最终用户和开发人员同样都是便捷的工具;但由于 BHO 被赋予了对浏览器和 Web 内容的相当大的控制能力,并且它们通常都处于未检测的状态,因此用户应十分谨慎地从可靠来源获取和安装 BHO。
BHO 的生命周期与它所交互的浏览器实例的生命周期相等。在 Internet Explorer 6 和早期版本中,这意味着为每个新的顶层窗口都创建(和销毁)一个新 BHO。另一方面,Internet Explorer 7 会为每个选项卡都创建和销毁一个新 BHO。BHO 不是由承载 WebBrowser 控件的其他应用程序加载,也不是由 HTML 对话框之类的窗口加载。
BHO 的主要要求是实现 IObjectWithSite 接口。此接口提供了一个方法(即 SetSite),此方法方便了与 Internet Explorer 的初始通信,并会在其将要释放时通知 BHO。我们实现此接口,然后将 BHO 的 CLSID 添加到注册表中,由此创建一个简单的浏览器扩展。
BHO 通常并不提供其自身的任何用户界面 (UI)。它们而是通过在后台响应浏览器事件和用户输入数据来发挥作用。例如,BHO 可以拦截弹出窗口、自动填充窗体或为鼠标手势添加支持。有一种常见误解认为工具栏扩展项需要 BHO;但如果将 BHO 与工具栏配合使用,则可以实现更丰富的用户体验。
注意 BHO 对于最终用户和开发人员同样都是便捷的工具;但由于 BHO 被赋予了对浏览器和 Web 内容的相当大的控制能力,并且它们通常都处于未检测的状态,因此用户应十分谨慎地从可靠来源获取和安装 BHO。
BHO 的生命周期与它所交互的浏览器实例的生命周期相等。在 Internet Explorer 6 和早期版本中,这意味着为每个新的顶层窗口都创建(和销毁)一个新 BHO。另一方面,Internet Explorer 7 会为每个选项卡都创建和销毁一个新 BHO。BHO 不是由承载 WebBrowser 控件的其他应用程序加载,也不是由 HTML 对话框之类的窗口加载。
BHO 的主要要求是实现 IObjectWithSite 接口。此接口提供了一个方法(即 SetSite),此方法方便了与 Internet Explorer 的初始通信,并会在其将要释放时通知 BHO。我们实现此接口,然后将 BHO 的 CLSID 添加到注册表中,由此创建一个简单的浏览器扩展。
相关文章推荐
- 用Visual Studio 2008开发IE BHO (浏览器帮助对象)之一
- 用Visual Studio 2008开发IE BHO (浏览器帮助对象)之一
- 用Visual Studio 2008开发IE BHO(浏览器帮助对象) 之三
- [Ray Linn]用Visual Studio 2008开发IE BHO(浏览器帮助对象) 之二
- [Ray Linn]用Visual Studio 2008开发IE BHO(浏览器帮助对象) 之三
- 用Visual Studio 2008开发IE BHO(浏览器帮助对象) 之二
- 用Visual Studio 2008开发IE BHO (浏览器帮助对象)之一
- 用Visual Studio 2008开发IE BHO(浏览器帮助对象)
- [Ray Linn]用Visual Studio 2008开发IE BHO (浏览器帮助对象)之一
- (转)在.NET程序运行过程中,什么是堆,什么是栈?什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?
- 面向过程、基于对象、面向对象,到底有什么区别?
- 从浏览器输入网址到显示网站页面之间到底发生了什么?系列(二)
- Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境。 是什么因素使一个程序成为Co
- 程序人生:我们工作到底为了什么?
- 从浏览器输入地址按下Enter键到网页出现到底发生了什么?
- 用VisualStudio2005生成浏览器帮助对象
- 判断 php 程序是通过什么方式运行的 (浏览器,还是命令行)
- 《C语言到底能干什么》1.2 第一个真正的窗口程序
- <6> 面向对象到底有什么(下)?
- 程序示例说明Java泛型到底是什么