LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

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

admin
2011年3月11日 23:16 本文热度 2709
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 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved