用浏览器辅助对象来增加功能

ZDNet软件频道 时间:2004-04-23 作者:Builder.com |  我要评论()
本文关键词:
在内联网设置中,你通常对用户用来访问本地Web应用程序的浏览器有控制权。通常,这种浏览器是Internet Explorer(IE)。
本文译自Builder.com,未经许可请勿转载

在内联网设置中,你通常对用户用来访问本地Web应用程序的浏览器有控制权。通常,这种浏览器是Internet Explorer(IE)。

这不一定是坏事,因为IE给开发者提供了大量创建强劲内联网应用程序的工具。本文并不是在推销IE,但是因为IE确实存在,而且是本地内联网应用程序的常用工具,所以有必要提到一些对Web开发人员有用的技术。

其中一种技术就是浏览器辅助对象(BHO)。BHO是在IE进程空间中运行的、能在可利用的窗口和模板中执行任何指令的组件对象模型(COM)对象。BHO通过常规脚本之外的Web应用程序可以给你提供额外功能。

假设你已经创建了需要用户输入的不同程序,而其中一些程序需要相同的信息。那这就要求用户输入数据许多次,而这可能会产生错误数据。

但是如果当载入页面时,你可以自动输入数据,并且你可以将这些信息储存在一个用户计算机上,创建一个中央信息库,那又会怎样呢?其中可以列入这个范畴的一条信息是用户的私人信息,如地址、电话号码等。当包含表格输入的页面载入时,BHO将自动将数据键入到表格字段中。

我将使用Visual Basic 来创建这个组件。但是,为了提供接口让IE能和组件交流,我必须参照一个显示IObjectWithSite接口的类型库。因为这不是十分容易,所以我不得不创建一个。我将使用对象描述语言(ODL)以及和VB一起装载的mktyplib工具来实现它。创建一个叫作VBBHO.ODL的文本文件,键入如下代码:

 [
uuid(CF9D9B76-EC4B-470D-99DC-AEC6F36A9261),
helpstring("VB IObjectWithSite Interface"),
version(1.0)
]
library IObjectWithSiteTLB
{
importlib("stdole2.tlb");
typedef [public] long GUIDPtr;
typedef [public] long VOIDPtr;
[
uuid(00000000-0000-0000-C000-000000000046),
odl
]
interface IUnknownVB
{
HRESULT QueryInterface(
[in] GUIDPtr priid,
[out] VOIDPtr *pvObj
);
long AddRef();
long Release();
}
[
uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352),
odl
]
interface IObjectWithSite:IUnknown
{
typedef IObjectWithSite *LPOBJECTWITHSITE;
HRESULT SetSite([in] IUnknownVB* pSite);
HRESULT GetSite([in] GUIDPtr priid, [in, out] VOIDPtr* ppvObj);
}
};

 

保存这个文件,并用mktyplib工具创建类型库文件。打开命令提示符,定位到包含MKTYPLIB.EXE的目录地址,然后键入mktyplib c:[path to ODL file]vbbho.odl。在VB中创建一个新的ActiveX DLL应用程序,将这个工程命名为VBBHO,将类模块则命名为MyBHO。打开程序索引,点击浏览按钮,接着添加我们刚刚创建的VBBHO.TLB文件。还有,要参照微软XML2.6版(Microsoft XML v2.6)或更新版本、微软Internet 控件(Microsoft Internet Controls)以及微软HTML对象库(Microsoft HTML Object Library)。

 


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134