如何使用BHO定制你的Internet Explorer浏览器

原创 2008年09月29日 23:25:00
导读:

原文出处:Browser Helper Objects: The Browser the Way You Want It

一、简介
  有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。结果,你最终有的只是一个新但不标准的浏览器。Web浏览器控件只是浏览器的分析引擎。这意味着仍然存在若干的与用户接口相关的工作等待你做――增加一个地址栏,工具栏,历史记录,状态栏,频道栏和收藏夹等。如此,要产生一个定制的浏览器,你可以进行两种类型的编程――一种象微软把Web浏览器控件转变成一个功能齐全的浏览器如Internet Explorer;一种是在现有的基础上加一些新的功能。如果有一个直接的方法定制现有的Internet Explorer该多好?BHO(Browser Helper Objects,我译为"浏览器帮助者对象",以下皆简称BHO)正是用来实现此目的的。

二、关于软件定制
  以前,定制一个软件的行为主要是通过子类化方法实现的。 通过这种办法,你可以改变一个窗口的外表与行为。子类化虽然被认为是一种有点暴力方式――受害者根本不知道发生的事情――但它还是长时间以来的唯一的选择。
  随着微软Win32 API的到来,进程间子类化不再被鼓励使用并愈发变得困难起来。当然,如果你是勇敢的--指针从未吓倒你,而最重要的是,如果你已经游刃于系统钩子之间,你可能觉得这一问题太简单了。 但是情形并不总是这样。暂放下这点不管,问题在于每一个进程运行在自己的地址空间中,而且打破进程边界略微有些不正确性。 另一方面, 你可能需要对定制进行更好的管理。更经常情况下,定制可能是程序本身强烈要求实现的。
  在后者情况下,已安装的软件只需在既定的磁盘位置查询另外的组件模块,然后装载、设定初值,最后让它们自由地按照既定的设计工作。这正是Internet Explorer浏览器和它的BHO所要实现的。

三、什么是BHO?
  从某种观点看,Internet Explorer同普通的Win32程序没有什么两样。借助于BHO,你可以写一个进程内COM对象,这个对象在每次启动时都要加载。这样的对象会在与浏览器相同的上下文中运行,并能对可用的窗口和模块执行任何行动。例如,一个BHO能够探测到典型的事件,如GoBack、GoForward、DocumentComplete等;另外BHO能够存取浏览器的菜单与工具栏并能做出修改,还能够产生新窗口来显示当前网页的一些额外信息,还能够安装钩子以监控一些消息和动作。简而言之, BHO的工作如我们打入浏览器领地的一位间谍(注意这是微软允许的合法工作)。
  在进一步了解BHO细节之前,有几点我需要进一步阐述。首先,BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的BHO对象实例就要生成。任何 BHO对象与浏览器实例的生命周期是一致的。其次, BHO仅存在于Internet Explorer 4.0及以后版本中。
如果你在使用Microsoft Windows? 98, Windows 2000, Windows 95, or Windows NT版本4.0 操作系统的话,也就一块运行了活动桌面外壳4.71,BHO也被 Windows资源管理器所支持。 BHO是一个COM进程内服务,注册于注册表中某一键下。在启动时,Internet Explorer查询那个键并把该键下的所有对象预以加载。
  Internet Explorer浏览器初始化这一对象并要求某一接口功能。如果发现这一接口, Internet Explorer使用其提供的方法传递 IUnknown 指针到BHO对象。见图一:

bhoieimg1.gif
图一 ie浏览器如何装入和初始化BHO对象,BHO场所(site)是用于实现通信的COM接口

  浏览器可能在注册表中发现一系列的CLSID,并由此为每个CLSID建立一个进程中实例。结果是,这些对象被装载至浏览器上下文中并运行起来,好象它们是本地组件一样。但是,由于Internet Explorer的COM特性,即使被装入到它的进程空间中于事(你的野心实现)也不一定会有多大帮助。用另一说法, BHO的确能够做许多潜在的有用的事情,如子类化组成窗口或者安装线程局部钩子,但是它确实远离浏览器的核心活动。为了钩住浏览器的事件或者自动化浏览器,BHO需要建立一个私有的基于COM的通讯通道。为此,该BHO应该实现一个称为IObjectWithSite的接口。事实上,通过接口IobjectWithSite, Internet Explorer 可以传递它的IUnknown 接口。BHO反过来能够存储该接口并进一步查询更专门的接口,如IWebBrowser2、IDispatch和IConnectionPointContainer。
  另外一种分析BHO对象的途径与Internet Explorer外壳扩展有关。我们知道,一个WINDOWS外壳扩展即是一个进程内的COM服务器,它在Windows资源管理器执行某种动作时装入内存――如显示上下文菜单。通过建立一个实现几个COM接口的COM模块,你就给上下文菜单加上一些项并能预以正确处理。一个外壳扩展必须以Windows资源管理器能够发现的方法注册。一个BHO对象遵循同样的模式――唯一的改变在于要实现的接口。然而,尽管实现方式有所不同,外壳扩展与 BHO 仍有许多共同的特点。如下表一:

表一 外壳扩展与 BHO相近特性比较

本文转自
http://www.vckbase.com/document/viewdoc/?id=1426
版权声明:本文为博主原创文章,未经博主允许不得转载。

(转)如何使用BHO定制你的Internet Explorer浏览器

一、简介 有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。结果,你最终有的只是一个新但不标准的浏览器。Web浏览器控件只是浏览器的分析引...
  • gxj1680
  • gxj1680
  • 2012年07月19日 11:59
  • 764

如何使用BHO定制你的Internet Explorer浏览器

如何使用BHO定制你的Internet Explorer浏览器原文:微软公司 Dino Esposito编译:朱先中原文出处:Browser Helper Objects: The Browser t...
  • weixu_2008
  • weixu_2008
  • 2007年09月15日 09:45
  • 791

使用BHO定制Internet Explorer浏览器

一、简介  有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。结果,你最终有的只是一个新但不标准的浏览器。Web浏览器控件只是浏览器的分析引...
  • onlinewan
  • onlinewan
  • 2007年04月10日 11:23
  • 794

BHOManager 问题

前一阵子,加入了测试联盟的QQ群(现在被郁闷的踢出了,天呐,我这种真正搞测试的都被踢了),那个群还真热闹,不过一般都是讲些废话,开开玩笑。有个朋 友在群里问了一个问题:为什么他装了QTP以后,总是不...
  • yanglidong
  • yanglidong
  • 2010年12月07日 14:42
  • 4431

BHO浏览器辅助对象

BHO(Browser Helper Object,浏览器辅助对象,简称BHO) BHO是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(...
  • wb96a1007
  • wb96a1007
  • 2015年09月01日 22:05
  • 569

您的Microsoft Internet Explorer浏览器包含最新版本的内置Adobe Flash Player

因为win8、win10以后flash是内置在浏览器的,如果一定要另外安装adobe flash activeX版本的软件,会报如下的错误,因为IE、Microsoft Edge浏览器都是用的acti...
  • hejisan
  • hejisan
  • 2017年06月02日 11:04
  • 2329

打开IE时,弹出对话窗口,提示“您计算机上某个程序已损坏了您对 Internet Explorer 默认搜索提供程序的设置”

IE8遇到问题——打开IE时,弹出对话窗口,提示“您计算机上某个程序已损坏了您对 Internet Explorer 默认搜索提供程序的设置” 最终解决的方法如下: 注意:...
  • pThis
  • pThis
  • 2012年02月07日 20:57
  • 25797

IE编程精选-如何使用BHO定制你的Internet Explorer浏览器

IE编程精选 摘自:http://www.learnsky.com/bbs/printpage.asp?BoardID=6&ID=1002如何使用BHO定制你的Internet Explorer浏览器...
  • dtren
  • dtren
  • 2006年11月09日 20:17
  • 1741

桌面上Internet Explorer图标消失,怎样将Internet Explorer图标恢复到桌面上

这里将Internet Explorer图标放到桌面,不是指快捷方式,而是系统默认的,在其上右击,点属性会出现“Internet属性”窗口。经实际测试,以下三种方法可以实现。 方法1:Alt+I 法...
  • zm2714
  • zm2714
  • 2012年09月03日 13:47
  • 6647

使用BHO定制你的IE浏览器

2006-08-15 05:00作者:朱先中出处:慧都控件网责任编辑:方舟  一、简介  有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。...
  • jinhill
  • jinhill
  • 2009年02月03日 11:50
  • 1045
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用BHO定制你的Internet Explorer浏览器
举报原因:
原因补充:

(最多只允许输入30个字)