最近几天研究ActiveX ,做了个小例子,小记之。
一、开发环境
1、开发工具:VS2008;
2、开发语言:C#、Asp.net、js
3、操作系统:Winows7。
二、创建插件
1、创建一个类库命名为Activerx,修改类的名字为ActiveXObject。
代码如下:
2、生成强命名文件(snk)
将该文件拷贝到项目路径下面,并将项目(类库)的Assemly.cs 文件修改一下:
3、将类库注册为Com组件
右键类库,选择属性,在出现的面板里【生成】选项>勾选【为Com互操作注册】,生成即可。
三、制作ActiveX Setup安装文件
1、新建一个安装项目;
2、在项目上点右键,【添加】->【项目输出】,选择上边的项目Activerx;
3、生成项目。(此时可能会在当前系统中注册插件,参见一中的代码)
四、安装(注册)插件
1、 在第三步骤中生成的安装包Setup.exe,点击安装即可(安装过程中,可以选择安装路径,此路径是调用插件dll文件所需路径)。
2、或直接用regasm命令注册插件。如下:
3、注销插件
可以用命令 regasm /unregister activerx.dll路径。
五、创建客户端页面
1、页面代码如下:
2、运行程序,在客户端IE中可能会阻止插件运行。此时请确定两点:
A:IE浏览器->工具->Internet选项->安全->可信站点->站点 将当前IE地址栏中的URL加入进去。完毕后,在安全面板中,选中可信站点->自定义级别->Activex 控件和插件-> 对未标记为可执行脚本的Activex控件初始化并执行脚本->启用。
B:确定Activex插件已成功将信息注册到信息表中。
打开注册表(运行命令regedit),搜索插件classid:121C3E0E-DC6E-45dc-952B-A6617F0FAA32。成功注册的话,如图所示:
四、发布程序。客户端成功运行结果如下:
五、其它
1、本文只是简单了解下使用C#开发ActiveX控件,很多东西还没弄清楚,有问题的话,欢迎提出来。
2、该Activex插件没有签名,至于怎么做安全签名,暂时还没来得及搞明白,有哪为仁兄知道的话,请不吝赐教!
3、制作CAB包,参照如下步骤:
cab的安装制作:
下载cabsdk的工具,微软网站上有的下。
下载后执行如下:
C:/cabsdk/BIN/MyTreeActiveX>cabarc.exe n TreeActiveX.cab TreeActiveXSetup.msi My
TreeActiveX.inf
Microsoft (R) Cabinet Tool - Version 1.00.0601 (03/18/97)
Copyright (c) Microsoft Corp 1996-1997. All rights reserved.
Creating new cabinet 'TreeActiveX.cab' with compression 'MSZIP':
-- adding TreeActiveXSetup.msi
-- adding MyTreeActiveX.inf
Completed successfully
会生成一个TreeActiveX.cab的文件,网页上就可以使用了。
对了。inf的定义:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
hook1=hook1
[hook1]
run=msiexec.exe /i "%EXTRACT_DIR%/TreeActiveXSetup.msi" /qn
网页的写法:
<object id="ActivexObject" name="ActivexObject" width="100%" height="100%" classid="clsid:A5C532BA-45B2-44c7-ACAE-D526EF9D47B0"></object>
<script language='javascript' for='ActivexObject' event='OnDial(tel,uppkey)'>
dosame…
</script>
通过以上步骤完成ActiveX的编写,cab的制作和网页的部分。部署好后,会正常使用。
不过该ActiveX没有签名,所有需要设定一下ie,允许下载为签名的activex才可以正常下载和使用。
---------------------------------------------------------------------------------------------------------------
本文参考:
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
http://blog.bossma.cn/dotnet/csharp-activex-cab/comment-page-1/#comments