zoukankan      html  css  js  c++  java
  • [转]在WEB下的客户端控件的开发应用

    本文转自:http://ksolecn.spaces.live.com/default.aspx

    声明:本文章不是原创,copy来源已经忘记,感谢作者
     
    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。

  • 相关阅读:
    创建SSIS包—ETL中典型的数据清洗
    SSIS中的容器和数据流—数据转换(Transformations)
    创建SSIS包—循环和动态package
    SSIS中的容器和数据流—数据转换(Transformations)续
    创建SSIS包—建立端到端的package
    SQL点滴9—SQL Server中的事务处理以及SSIS中的内建事务
    SSIS中的容器和数据流—调试工具数据视图
    SQL点滴11—重置win7登录密码影响SQL登录
    SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
    SSIS中的容器和数据流—举例说明数据转换任务
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1056129.html
Copyright © 2011-2022 走看看