欢迎光临

木子屋

标题: 在WEB下的客户端控件的开发应用

作者: admin

日期: 2006-10-08 11:28 PM

分类: 脚本语言

内容: 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。

+ 查看当前日志评论 (1)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.551 ms

返回

标题: 在WEB下的客户端控件的开发应用

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.551 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.582 ms

返回