在WEB下的客户端控件的开发应用
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
1. Visual Basic中ActiveX控件的制作
ActiveX是Microsoft的术语,它是一组包括控件、DLL和ActiveX文档的组件,他通常是以动态连接库形势存在,因此必须在一个叫容器的可独立执行的软件中运行,比如VisualBasic,VisualC++,Internet Explorer等。因此ActiveX控件和容器必须都支持一些特定的接口协议。ActiveX应包括属性,事件和方法这些特殊机制,它也是创建ActiveX控件的核心。 从VisualBasic5.0开始,我们就可以用VB创建控件,VB6.0继承了VB5.0的开发第三方控件的能力。创建ActiveX控件有一定的步骤: (1)确定控件将要实现的功能。这一步很重要,在这里我们应该确定控件的外观,以及它的属性、事件和 方法。 (2)通过UserControl对象设计控件的外观。 (3)将代码添加到UserControl来实现控件的外观和行为。 (4)设计控件的接口,即属性、事件和方法。 (5)创建VB的Standard.EXE工程,利用他调试制作的控件。 (6)编译控件部件,生成.ocx文件。(在"文件"菜单, 有"生成DataTimer.ocx"选项) 制作DLL文件的方法类似。 注册控件的方法: 方法一、Regsvr32.exe注册,Regsvr32.exe位于Windows目录的system子目录下。点击Windows的"开始→运行"菜单,在对话框中输入以下命令: regsvr32 netshare.ocx //注册netshare.ocx控件 regsvr32 /u netshare.ocx //解除netshare.ocx控件的注册 方法二、新建注册文件,进行添加右键注册和解除的选项。 新建一TEXT文件,输入以下内容: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ocxfile\shell] [HKEY_CLASSES_ROOT\ocxfile\shell\注册] [HKEY_CLASSES_ROOT\ocxfile\shell\注册\command] @="regsvr32 %1" [HKEY_CLASSES_ROOT\ocxfile\shell\反注册] "Command"="regsvr32 %1 /u" [HKEY_CLASSES_ROOT\ocxfile\shell\反注册\command] @="regsvr32 %1 /u" 然后保存成REG文件,双击执行,即完成添加此功能。 2.制作CAB Internet 包 VB6可以很方便的编写OCX控件及DLL组件,要在网站中使用DLL组件的使用很简单,直接在ASP中使用Server.CreateObject("工程名.组件名")可以在服务器端调用该组件。而OCX使用则因为需要下载到客户端而变得复杂些,要打包成CAB文件进行调用。CAB文件是一种WINDOWS的标准压缩格式文件,在网页上发布ActiveX的时候经常使用该压缩格式对文件进行包装,目的是使文件便于在Internet上传输。 创建CAB文件的方法有很多,以下是应用VB6实现打包。 OCX打包成internet包步骤: (1)启运打包程序:菜单"外接程序"-》"外接程序管理器"-》启用"打包和展开向导" (2)开始打包:菜单"外接程序"-》"打包和展开向导",打包成internet包:选"打包",在选择包类型时选"internet软件包".... 在CAB包中可以包括所有此控件中使用到的DLL文件。 除了在VB6中进行打包外,还可以在Microsoft visual studio .Net 2003中"创建CAB项目"。 对单一的OCX文件打包,也可以用WINDOWS自带的iexpress.exe(c:\windows\system32目录下),在开始菜单->运行里输入iexpress。 3.为CAB进行签名 通过Microsoft的验证代码工具,可以对ActiveX控件进行签名,这告诉用户你的确是控件的作者而且没有他人篡改过这个控件; 为了使用验证代码工具对组件进行签名,必须从证书授权机构获得一个数字证书;证书包含表明特定软件程序是正版的信息,这确保了其他程序不能再使用原程序的标识。证书还记录了颁发日期。当您试图下载软件时,Internet Explorer 会验证证书中的信息,以及当前日期是否在证书的截止日期之前。如果在下载时该信息不是最新的和有效的,Internet Explorer 将显示一个警告; 在IE默认的安全级别中,ActiveX控件安装之前,用户可以根据自己对软件发行商和软件本身的信任程度,选择决定是否继续安装和运行此软件。 网络实名插件使用了国际权威安全厂商Verisign所颁发的数字证书进行签名,因此可以确保网络实名插件的真实性和安全性。 使用Microsoft visual studio .Net 2003开发工具。所以你必须拥有Microsoft visual studio .Net 2002以上版本的环境。 1、 获得软件发行证书 第一步:开始菜单->运行,输入cmd.exe。打开windows 2000的命令提示符环境窗口。 第二步:输入CD C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin,进入该目录,用dir命令你可以看到signcode.exe、makecert.exe和cert2spc.exe程序。注意:以上路径根据你机器Microsoft.Net的安装路径不同而异。 第三步:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。 输入makecert -sk FortuneAge -n "CN=FortuneAge COMPANY" c:\FortuneAge.cer。 就会在你的C:生成 FortuneAge.cer文件。 说明:参数-n指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。注意这里的CN必须大写。-sk指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。输入makecert -?可以查看其他参数的用法。 第四步:创建发行者证书 (SPC)。 注意,发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书 (SPC)。Cert2spc.exe 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的 SPC。 输入命令:cert2spc c:\FortuneAge.cer c:\FortuneAge.spc,在C:盘生成证书文件。至此,你已经拥有了仅用于测试的软件证书。其实,我们开发的程序或ActiveX控件只要仅用于企业内部,完全可以用这种办法作数字签名,使你的控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。 第五步:在上面打开的dos窗口里,输入如下命令:signcode /spc c:\FortuneAge.spc /k WHX c:\scan.cab。至此,已经对成功对can.cab文件签名。可以查看文件的属性,查看数字签名。 4.在WEB上的调用 在HTML页面中使用ActiveX控件包含三个基本操作:将控件放入HTML中;将该控件下载给用户;在用户机器上安装该控件。如果只是针对IE用户,在HTML中插入ActiveX控件就比较简单;如果同时兼顾IE和Netscape用户,则要做更多工作。大家知道,HTML文件由文本和各种标志(tags)组成,ActiveX 控件对于IE在HTML中的标志是<OBJECT>,该标记有几个重要的参数特性,它们是: 1.ID:为控件提供一个标识名称,为HTML代码提供一种访问该控件的方式。 2.CLASSID:是该控件唯一的UUID,告诉IE装入哪个对象。如果使用已经开发好的控件,它的CLASSID可以通过调用Win95或NT下的应用Regedit来查找。从开始菜单中运行该程序,展开HKEY_CLASSES_ROOT项,可以看到按字母顺序排列的注册表,找到需要使用的控件名,例如WClnt,展开时可看到一个CLSID文件夹,里面就是该控件的CLASSID。 如果是自己用VC开发控件,该UUID可以在ActiveX控件项目中的ODL(对象描述库)文件中找到;通过查看控件的类信息注释来定位特定控件的UUID,例如,要找到CMyControl控件的UUID,则需要找到以下代码: // Class information for CMyControl [uuid (051C4748-1262-11D2-87C1-00A024D948FB), licensed, helpstring("CmyControl Control"), control ] uuid后面括号中的内容就是该控件的UUID。 3.CODEBASE:如果在用户机器上没有控件的当前版本,该参数告诉用户浏览器在哪里可找到要下载的控件和最新版本号.当控件作了修改后,可以更改版本号强制用户重新下载。 4.PARAM:该标记用于设置控件的初始属性值,它有两个特性:Name和Value,即属性名称和属性值。 此外还有一些标记,如:Width表示该控件所占的宽度,Height表示高度等,总体来说,这样一个插入控件的HTML代码和插入Java Applet的HTML代码非常相似。 下面是一个嵌有ActiveX控件的HTML代码示例: <OBJECT ID="CMyControl" CLASSID="clsid:051C4748-1262-11D2-87C1-00A024D948FB" CODEBASE="http://www.mysite.com.cn/ocxdir/mycontrol.ocx#version=1,0,0,1" WIDTH=400 HEIGHT=200 ALIGN=center HSPACE=0 VSPACE=0 > </OBJECT> CODEBASE的设置中,若CAB文件与该WEB文件保存在同一目录下,只需写其文件名即可,即CODEBASE="mycontrol.ocx#version=1,0,0,1";#号代表此控件的版本,如果版本不同,客户端的浏览器自然会下载更新。 如果希望控件还能在Netscape中运行,除了Netscape需加装插件外,HTML也要加一些附加标记,下面的例子中EMBED段就是为Netscape加上的。如果使用MFC开发OCX控件,则少数用户第一次访问时除了下载OCX文件外,还要下载相应的MFC DLL,下载量变大,这时可将相关文件在服务器端打包成可以在客户端自解压安装的CAB文件。经过修改后的HTML代码段如下: <ALIGN="CENTER" CLASSID="clsid: 7BCA18C6-2178-11D2-87C1-00A024D948FB" WIDTH="1200" HEIGHT="900" ID="marquee" CODEBASE="http://218.168.188.188/scadaweb/WClnt.cab#version=1,0,0,1"> <EMBED ALIGN="CENTER"CLASSID="clsid:7BCA18C6- 2178-11D2-87C1-00A024D948FB" WIDTH="1200" HEIGHT="900" ID="marqueequot;" CODEBASE="http://218.168.188.188/scadaweb/ WClnt.OCX#version=1,0,0,1" TYPE="application/oleobject"> 5.结束语 在WEB中开发控件的大致流程已公布,但它的设计和实现方法多种多样。WEB控件的制作的针对方向为在客户端的服务,如客户端打印、扫描等功能。若果是提供服务器端的控件调用,可以研究一下WEBSERVER。 该文章在 2011/3/11 23:16:26 编辑过 |
关键字查询
相关文章
正在查询... |