浏览器辅助对象技术的应用与设计方法

2012-12-28 12:32李华伟
中国新技术新产品 2012年4期
关键词:注册表网址浏览器

李华伟 李 芹 王 瑜

(泰安市中心医院信息中心,山东 泰安 271000)

浏览器辅助对象技术,全称Browser Helper Object,以下简称BHO,就是我们常说的IE浏览器插件。它是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,利用BHO的交互接口,就可以在加载IE浏览器的同时进行相应的IE控制处理或加载其它程序,实现与IE浏览器的交互。本文通过VB的实际开发案例,提供了VB利用BHO开发相关程序的核心代码,通过简单的演示,为开发者提供一种开发思路。

1 BHO的简介与实现原理

BHO的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。符合BHO接口标准的程序代码被写为DLL动态链接库形式在注册表里注册为COM对象,还要在BHO接口的注册表入口处(即HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowserHelperObjects)进行组件注册,以后每次IE启动时都会通过这里描述的注册信息调用加载这个DLL文件,而这个DLL文件就因此成为IE的一个模块(BHO组件),与IE共享一个运行周期,直到IE被关闭。

2 应用BHO技术的开发案例

下面采用VB6.0来创建Browser Helper Object,实现记录IE浏览网址与日期时间,详细过程与代码如下:

2.1 打开VB6.0,点击菜单栏[文件]--[新建工程],在弹出的 [新建工程]页面中选择ActiveX DLL,保存工程为TestBHO.vbp;

2.2 将类模块中的Class1改名为TestBHO并保存为TestBHO.cls;

2.3 点击菜单栏[工程]--[引用],选择引用“VB ShellLibrary”(VBSHELL.TLB)、“Microsoft HTML ObjectLibrary”(MSHTML.TLB)、“Microsoft Internet Controls”(shdocvw.dll);

2.4 在类模块TestBHO.cls中添加核心接口代码,实现与IE的接口,代码如下:

Option Explicit

Implements IObjectWithSite

PrivateDeclareSub CopyMemory Lib“Kernel32”Alias“RtlMoveMemory”(pDstAs Any,pSrc As Any,ByVal ByteLen As Long)

Private moUnknown As IUnknownVB

Private WithEvents moBrowser As InternetExplorer

记录网址的文件路径

Dim mSavePath As String

'加载Dll文件时初始化变量

Private Sub Class_Initialize()

'将网址记录到c:ho.txt下

mSavePath="C:ho.txt"

End Sub

Private Sub IObjectWithSite_GetSite(By-Val priid As VBShellLib.REFIID,ppvObj As VBShellLib.VOID)

If Not(moUnknown Is Nothing)Then

moUnknown.QueryInterface priid,ppvObj

End If

End Sub

Private Sub IObjectWithSite_SetSite(By-Val pSite As VBShellLib.IUnknownVB)

Set moUnknown=pSite

If ObjPtr(pSite)=0 Then

CopyMemory moBrowser,0 & ,4

Set moUnknown=Nothing

Set moBrowser=Nothing

Else

Set moBrowser=moUnknown

End If

End Sub

'将字符串联写入指定路径的文档

Private Sub WriteTxt(ByValUrlAs String)

Open mSavePath For Append As 1

Print#1,Date$ & "" & Time$ & "" & Url

Close#1

End Sub

'网页打开完成时,将上网地址记录到指定文件

Private Sub moBrowser_DocumentComplete(ByVal pDisp As Object,Url As Variant)

Call WriteTxt(Url)

End Sub

2.5 生成接口dll文件TestBHO.dll并复制到系统system32目录下;

2.6 运行"regsvr32 TestBHO.dll"注册TestBHO.dll文件,然后打开注册表,通过查找TestBHO.dll,找到其CLSID(笔者的 dll文件CLSID为{5B173AEA-A51B-4FB1-89B2-88C7A0D20C9D}),再从注册表中找到接口HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowser Helper Objects,在其下新建项,项名为TestBHO.dll的CLSID;

2.7 新打开一个IE浏览器,打开几个网页,再查看C:ho.txt文件,是不是已经记录了你浏览的网页地址,效果如何?

至此,这个BHO接口已经完成,每次新打开一个IE窗口,都会加载TestBHO.dll,每打开一个网页,都会将上网日期时间、网页地址记录到C:ho.txt中,关闭IE窗口时,TestBHO.dll也会自动关闭,不再运行记录网址。

3 BHO技术的应用

目前,BHO技术已经广泛应用于互联网程序开发中,实现的功能也多种多样,包括网页内容过滤、自动填单、广告拦截、上网行为监控、网页翻译等功能,大家熟知的软件像百度工具条、迅雷等工具都利用了BHO技术,甚至很多病毒、木马、流氓软件也都利用了这种技术,当然,清理它们的杀毒软件,专杀工具也要利用此技术,所以掌握这种技术对相关程序开发很有帮助。

本文中的程序仅是实现BHO接口的一个简单功能的案例,作为一个接口演示,提供一个思路,希望起到抛砖引玉的作用,让大家能做出更多更实用的程序。

[1]COM/DCOM技术内幕.(美)阿伯内西著汪浩等译.2000.电子工业出版社.

[2]深入解析Windows操作系统.(美)Russinovich,M.E.(美)Solomon,D.A.2007.电子工业出版社

[3]COM本质论.DON BOX.2001.中国电力出版社

猜你喜欢
注册表网址浏览器
2023年6月全宅影音器材编辑推荐
本刊网址变更通知
反浏览器指纹追踪
环球浏览器
本刊网址变更通知
本刊网址更改通知
学习器揭开注册表面纱