设为首页 加入收藏

TOP

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程(一)
2014-11-23 21:34:53 】 浏览:1727
Tags:VC2005 开发 MFC ActiveX ocx 控件 发布 .net 网站 全部 过程

开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)
ActiveX控件 用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一 次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调 用控件的属性或方法。因此,开发面向Web的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。 下面介绍这个问题。
一. 创建MFC ActiveX项目
1. 打开VS2005新建MFC项目。这里我们取名为“ActiveXDemo”。


2. 输入项目名称为“ActiveXDemo”和项目位置。点击“确定”按钮,打开向导对话框。

WoSign 免费提供的时间戳服务URL: http://timestamp.wosign.com/timestamp
时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。

3. 选择“控件设置”选项卡,具体设置可参考上图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。

二. 添加控件方法
VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。
1. 点击“视图”,打开“类视图”窗口。

2. 展开“ActiveXDemoLib”项,选中“_DActiveXDemo”项。点击鼠标右键,选择“添加”下的“添加方法”。


3. 打开添加方法向导窗口。因为我们是添加一个加法方法,所以我们设置的返回类型为LONG型,方法名设为AddFun,添加两个LONG类型参数Add1,Add2。



4. 其它为默认设置,点击“完成”按钮完成添加方法。接下来我们打开“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。

5. 打开代码视图,我们会发现VC2005已经为我们添加了一个“AddFun”方法,我们在方法内添加“return Add1 + Add2;”语句。


三、MFC Activex 安全问题:
 1、在默认环境下,编译的MFC Activex控件,只能在本地代码中运行,即在http://localhost/xxx/xxx.htm中执行,而在http://127.0.0.1/xxx/xxx.htm中提示无相关属性,需要设置其初始化和脚本运行的安全性
  ActiveX在远程IE页面上执行,需要实现安全接口。
  在ATL写的ActiveX中,用IObjectSafety。
  http://support.microsoft.com/kb/168371/en-us
  在MFC写的ActiveX中,直接修改注册表。
  http://support.microsoft.com/kb/161873/en-us
  mfc实现的ocx,要在app实现文件中包括两个文件:
在ActivexDemo.cpp 文件中实现以下方法

代码

现在控件就可以在自注册时就注册为安全控件了。
2、设置项目属性 将配置类型设置成静态库(.lib)


3、 最后生成项目,ocx控件就产生了。

ActiveX打包与发布
在VS2005或VS2008安装后发现路径**VC7\Common7\Tools\Bin\下有许多小工具,我对带有Cert的文件比较感兴趣。经过研究,发现是有关证书和签名的,当然,该证书未被证书认证机构认可。下面列出这些工具和我的使用心得。
1。Makecert.exe ---证书创建工具
2。Cert2Spc.exe ---发行者证书测试工具
3。Signcode.exe ---文件签名工具(VS2008带的是signtool)

一、ActiveX发布步骤
在这里简单说明下,打包activeX需要制作证书,具体用到makecert 、cert2spc 、signtool 这三个VS提供的工具,工具在VS文件夹里面,以下制作过程需要在工具所在的文件夹下完成!
1、单击"开始"-->"运行(R)"-->输入"cmd"-->回车-->进入到操作的控件所在的目录(需要将上面所说的工具,和ocx控件放到一个文件夹下);
2、创建PVK文件(私人密匙文件),在命令行中输入"makecert -sk demo demo.pvk -n CN=XXXXXXX公司",然后回车;
sk-表示主题的密钥容器位置,ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置;
3、创建CER文件(公司证书),在命令行中输入"makecert -sk demo.pvk demo.cer",然后回车,如图8所示,若出现"Successed"提示,则会在E:\ demo目录下生成demo.cer文件;
sk-表示主题的密钥容器位置,is-颁发者的证书存储名称, n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名);
4、创建SPC测试软件出版商证明书,在命令行中输入"cert2spc demo.cer demo.spc",然后回车;
5、创建INF文件,用记录本编辑以下信息:

代码
[version]

signature="$CHICAGO$"

AdvancedINF=2.0

[Add.Code]

ActivexDemo.ocx=ActivexDemo.ocx

[ActivexDemo.ocx]

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

clsid={468E4531-F890-47EC-8368-3BDA4448FF08}
//“clsid”是将要安装的控件的 CLSID
DestDir=11
// 它的值是dll将要存到本地硬盘的位置,如果它的值是10,则将dll放到\Windows或者\WinNT下;如果是11,则放到\Windows \System或者\WinNT\System32下;

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VS之多态虚函数的实现 下一篇随想Visual C++ “导出/导入类的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目