浏览器辅助对象是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,利用 BHO 的交互接口,就可以 在加载 IE 浏览器的同时进行相应的 IE 控制处理或加载其它程序,实现与 IE 浏览器的交互。
介绍浏览器辅助对象,全称BrowserHelperObject,以下简称BHO,就是我们常说的IE浏览器插件。它是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,利用BHO的交互接口,就可以在加载IE浏览器的同时进行相应的IE控制处理或加载其它程序,实现与IE浏览器的交互。1
实现原理BHO的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。符合BHO接口标准的程序代码被写为DLL动态链接库形式在注册表里注册为COM对象,还要在BHO接口的注册表入口处进行组件注册,以后每次IE启动时都会通过这里描述的注册信息调用加载这个DLL文件,而这个DLL文件就因此成为IE的一个模块(BHO组件),与IE共享一个运行周期,直到IE被关闭。
开发案例下面采用VB6.0来创建BrowserHelperObject,实现记录IE浏览网址与日期时间。1
详细过程如下:
2.1打开VB6.0,点击菜单栏[文件]--[新建工程],在弹出的[新建工程]页面中选择ActiveXDLL,保存工程为TestBHO.vbp;
2.2将类模块中的Class1改名为TestB-HO并保存为TestBHO.cls;
2.3点击菜单栏[工程]--[引用],选择引用“VBShellLibrary”(VBSHELL.TLB)、“Mi-crosoftHTMLObjectLibrary”(MSHTML.TLB)、“MicrosoftInternetControls”(shdocvw.dll);
2.4在类模块TestBHO.cls中添加核心接口代码,实现与IE的接口;
2.5生成接口dll文件TestBHO.dll并复制到系统system32目录下;
2.6运行"regsvr32TestBHO.dll"注册TestBHO.dll文件,然后打开注册表,通过查找TestBHO.dll,找到其CLSID,再从注册表中找到接口,在其下新建项,项名为TestBHO.dll的CLSID;
2.7新打开一个IE浏览器,打开几个网页,再查看C:\bho.txt文件,是不是已经记录了你浏览的网页地址,效果如何?
至此,这个BHO接口已经完成,每次新打开一个IE窗口,都会加载TestBHO.dll,每打开一个网页,都会将上网日期时间、网页地址记录到C:\bho.txt中,关闭IE窗口时,TestBHO.dll也会自动关闭,不再运行记录网址。
应用目前,BHO技术已经广泛应用于互联网程序开发中,实现的功能也多种多样,包括网页内容过滤、自动填单、广告拦截、上网行为监控、网页翻译等功能,大家熟知的软件像百度工具条、迅雷等工具都利用了BHO技术,甚至很多病毒、木马、流氓软件也都利用了这种技术,当然,清理它们的杀毒软件,专杀工具也要利用此技术,所以掌握这种技术对相关程序开发很有帮助。
本词条内容贡献者为:
李嘉骞 - 博士 - 同济大学