开发者社区> double2li> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

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,显示结果如下:

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
浏览器插件之ActiveX开发(一)
浏览器控件开发 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题。在有特殊需求(如涉及数据安全的金融业务数据交互、需插件才能实现的与本地设备的交互等)的情况下可以酌情慎用。 浏览器插件总体可以划分为两大阵营,即IE支持的插件以及非IE支持的插件。本来在Netscape时代,对于浏览器插件是有公用的
1974 0
C#开发ActiveX控件及指纹采集
最近做一个指纹采集和比对的功能,因为公司整个项目是WEB类型的,所以指纹采集的模块要嵌套在网页中,那只有用ActiveX了,以下是一些操作及效果,做个笔记! 新建用户控件,编写CS代码,如下: using System; using System.
917 0
使用VS2010 C#开发ActiveX控件
最近做读卡器的B/S应用程序开发,由于读卡器厂商提供的手册都是C/S版本的,而且只有一个原始的Dll包,并没有web版的,那么就只好自己动手,丰衣足食了 要开发Web版的读卡程序,大体思路如下: 1. 使用C#对原始的Dll进行封装,这里要封装两部分内容,一部分是串口通信的功能,一部分是对卡读写的功能。
1521 0
使用VS2010 C#开发ActiveX控件
  在网上查了一些资料也实际操作了一下,在此自己再作一次详细记录。   功能:将对机具操作的FK.dll封装成fk.ocx,注册后能在网页上对机器操作。 使用Visual Studio 2010 .
808 0
基于MFC的ActiveX控件开发
ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中。在VC下ActiveX控件的开发可以分为三种,一种是直接用COM的API来开发,这样做显然非常的麻烦,对程序员要求也非常高,因此一般是不予考虑的;一种是基于传统的MFC,采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。
1333 0
ActiveX控件和它的容器
1.COM基础 2.ActiveX控件及实现 3.ActiveX控件容器及实现 4.总结 1.COM基础 COM是一种组件开发技术, 它实际上是一种在二进制层上兼容的软件开发方法的规范. COM技术是与具体的编程语言无关的技术, 只要是支持COM开发的开发工具都可以用来进行COM应用开发, 而它们在二进制上兼容的要求由各个开发工具来实现, 绝大部分是由编译器实现的.
1154 0
使用ATL开发ActiveX控件
本文描述了使用ATL开发一个ActiveX控件的完整过程。 一、创建项目 单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“Calculator”。
1258 0
【转】用ATL开发和部署ActiveX网页控件
from:http://hi.baidu.com/zifan/blog/item/ea050df35bfa5dc10a46e022.html2009-09-25 17:02摘 要 ActiveX插件技术广泛的运用于B/S系统中,本文通过一个项目实例,详细介绍用ATL开发和部署ActiveX网页控件的过程。
1183 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
2869
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载