• VC6.0从开发activex ocx控件到发布到网上全过程


    ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。

    一:vc创建activex控件

    创建一个activex控件,名称为:test.ocx,创建步骤略。显示结果如下:

    为该控件增加一个方法void GetStr(LPCTSTR str),

    该方法内部代码如下:

    这样,GetStr方法就被加入了。

    onDraw函数下代码如下

    下面,测试该方法,鼠标右键控件,选择Invoke Methods,弹出如下对话框:

    parameter中输入hello,单击Invoke按钮,显示如下:

    那么如何在网页中将参数传递给控件,让其在网页中显示出来呢??稍后介绍

    test.ocx控件放入c:\ceshi目录下,到网上下载Makecert.exeCert2Spc.exeSigncode.exe,并一同放入c:\ceshi目录下

     

    二:ActiveX打包与发布

    1)用到的工具如下所示

    1.Makecert.exe ---证书创建工具
    2.Cert2Spc.exe ---发行者证书测试工具
    3.Signcode.exe ---文件签名工具

    2)ActiveX发布步骤

           打包activeX需要制作证书,具体用到makecert cert2spc signtool这三个工具,

    现在我们将以上工具和.ocx控件放到同一个目录c:\test.

    1)单击"开始"-->"运行(R"-->输入"cmd"-->回车-->进入到操作的控件所在的目录(需要将上面所说的工具,和ocx控件放到一个文件夹下);

    2)创建inf文件,代码如下

    [version]   

    signature="$CHICAGO$"

    AdvancedINF=2.0

    [Add.Code]

    test.ocx=test.ocx

    [test.ocx]

    file-win32-x86=thiscab   

    RegisterServer=yes

    clsid={B649E664-D7CF-4481-A58E-AC8B4440794A}  

    DestDir=11

    FileVersion=1,0,0,1

    上述代码解释如下:

    file-win32-x86=thiscab    
    //
    告诉ie到哪里去得到这个dllfile一共包括三个部分,第一部分是file,这个永远都是这样的(至少目前来说);第二部分告诉声明支持的OSwin32表示windowsmac就是苹果MAC  OX了;第三部分是CPU类型,比如说x86  ppc  (Power  PC)  mips或者alpha 。其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL   
    例如:  file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL   

    clsid={ B649E664-D7CF-4481-A58E-AC8B4440794A }    
    //“clsid”
    是将要安装的控件的 CLSID  如何获得呢------
    DestDir=11    
    //
    它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到\Windows或者\WinNT下;如果是11,则放到\Windows\System或者\WinNT\System32下;如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。  
    FileVersion=1,0,0,1
    //
    说明了atl90.dll的版本号  

    3infdll打包成cab

    cabarc  n  test.cab  test.inf  test.ocx这样就将其打包成test.cab

    (4) 生成cert证书

    为得到签名用的spc格式
     makecert /sv "test.pvk" /n "cn=test" test.cer
     
    执行过程中会要求输入密码,密码要一致,如下图所示

     

         (5) 生成.spc文件

    cert2spc test.cer test.spc之后,就在其目录中多了一个test.spc文件

    (6) cab文件进行签名

    运行singcode signwizard,此时会弹出对话框,操作如图所示:

    直接按下一步

    找到指定目录下的.cab文件

    选择自定义

    选择“从文件选择”选项

    下一步

    按浏览找到.pvk文件

    选择md5

    ;默认直接按下一步

    不填,下一步

    不填,下一步

    按完成

    7

    下面是一个嵌有ActiveX控件testHTML代码示例:

     <HTML>

    <HEAD>

    <TITLE>New Page</TITLE>

    </HEAD>

    <BODY>

    <object classid="clsid:BFB6032F-6F8D-4B7F-B0B3-6303D08348A4"id="test" CODEBASE="http://www.microdraw.com/down/microdrawocx.cab#version=1,0,0,1"

    WIDTH=400

    HEIGHT=200

    ALIGN=center

    </object>

    </BODY>

    </HTML>

    千万要注意:classid是可以从注册表中查到,也可以从vc源代码中获取,打开test.odl文件,id如下所示:

    这样,一个网页就创建成功啦!!!

    最后,c:\test中有如下文件:

    打开test.htm网页显示结果如下:

     

    三:网页中参数传递

    接下来,来完成最核心的东西,从网页中传递参数到控件显示

    修改html代码如下:

    <HTML>

    <HEAD>

    <TITLE>MyActiveX - Methods, Properties, and Events</TITLE>

    <SCRIPT LANGUAGE="JavaScript">

     

    function PassParameter()

    {

        if (StringInput.value != " ")

        {

            test.GetStr(StringInput.value);

        }

    }

    </SCRIPT>

    </HEAD>

    <BODY>

    <center>

    MyActiveX - Methods, Properties, and Events Example

    <p></p>

    <OBJECT ID="test" WIDTH=350 HEIGHT=50

    CLASSID="CLSID: BFB6032F-6F8D-4B7F-B0B3-6303D08348A4">

        <PARAM NAME="_Version" VALUE="65536">

        <PARAM NAME="_ExtentX" VALUE="2646">

        <PARAM NAME="_ExtentY" VALUE="1323">

        <PARAM NAME="_StockProps" VALUE="0">

    </OBJECT>

    <p></p>

    Input Parameter: <INPUT TYPE ="text" NAME="StringInput" VALUE=" ">

    <p></p>

    <INPUT TYPE="button" NAME="Submit"

           VALUE="Submit" ONCLICK=PassParameter()>

    </SCRIPT>

    </center>

    </BODY>

    如上述代码所示,我们在JavaScript中写入函数PassParameter,该函数调用了控件中的方法GetStr,

    当鼠标点击按钮submit时,就会调用该函数,进而间接调用该方法。

    在编辑框中输入hello,单击submit,显示结果如下:

     

  • 相关阅读:
    osip状态机分析
    配置tomcat 加载指定的jar
    oracle创建用户并指定表空间
    CentOS7通过rsync+crontab实现两台服务器文件同步
    CentOS7配置MySQL5.7主备
    CentOS7本地安装MySQL5.7
    设置mysql 事务锁超时时间 innodb_lock_wait_timeout
    获取指定年月的第一天与最后一天
    Nginx 反向代理504 Gateway Time-out
    ubuntu下安装配置apache2与php
  • 原文地址:https://www.cnblogs.com/lidabo/p/2593771.html
Copyright © 2020-2023  润新知