VS2005自定义ActiveX控件在asp.net中应用方法
原文地址:http://www.cnblogs.com/zhf/archive/2009/03/02/1401299.html
开发环境为VS 2005, .NET framework 2.0
文件—>新建—>项目
弹出下面对话框
选择Windows 控件库 输入名称TestControl 点击“确定”
在设计窗口中拖入控件 label1 timer 2个button 如下图:
1. COM的接口和类创建
COM 接口(Interface):IMonitor
COM 类(Class):Monitor
1)GUID 指定该类或者接口的GUID。
2)声明属性InterfaceType(ComInterfaceType.InterfaceIsDual),ComVisible(true),以支持register 和 unregister。
3) IMonitor 是COM interface。C# 的COM Class 可以继承自COM interface 也可以不用interface.
2 实现IObjectSafety 接口
微软IObjectSafety 接口定义, GUID 为固定值, 一般不要修改,也可以重新生成GUID 在菜单栏 工具—>创建GUID
声明:
ObjectSafety
Monitor实现:
IObjectSafety 是一个接口,它可将其功能显露给 Internet Explorer的“设置脚本安全性”和“设置初始化安全性”安全特性。
3.注册和卸载
如果Class 声明中使用了 InterfaceType ,ComVisible(true) 属性,并且项目属性页设置 点击“生产”的 “为COM interop 注册” 项为TRUE,那么VS编译该项目可自动为Class注册。
也可以使用VS2005 自带工具 regasm.exe 手动注册和卸载 Class,可以用VS 自带工具oleview 查看是否注册成功
4.测试 以及调试
1)创建测试页面 解决方案右键 添加—>新建网站 Default.aspx
2)将测试页面拷贝到localhost 的根目录(安装IIS,设置TestControl根目录 IIS配置详细步骤略过)
3) 可以开始调试
5.发布
1)建立一个windows安装项目,并将ActiveX控件的主输出添加到项目中。然后,改动ActiveX控件的主输出文件的属性,将其Register属性改为vsdrpCOM.
2)编译该项目并得到MSI 安装文件 ClassroomViewerControl.msi
3)创建并编写INF 文件 ClassroomViewerControl.inf
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
hook1=hook1
[hook1]
run=msiexec.exe /i "%EXTRACT_DIR%\ClassroomViewerControl.msi" /qn
4) 创建CAB 文件 使用CAB SDK 中的工具CABARC.EXE (下载地址 http://support.microsoft.com/kb/310618)
CABARC.EXE -s 6144 n ClassroomViewerControl.cab ClassroomViewerControl.msi ClassroomViewerControl.inf
-s 6144:为签名留下6k的空间 n 创建cab
5) 签名,col.pfx 为密钥
signtool sign /f col.pfx ClassroomViewerControl.cab
6) 修改WEB PAGE hello.html并将CAB 拷贝到codebase指定的URL
<object id="Monitor" classid="clsid:627AD403-FA50-4a08-B875-770520865DD6" Width="640" Height="360" codebase="http://localhost/TestControl/ClassroomViewerControl.cab"> </object>
6.最后看一下效果
安装隐藏了msi 安装界面,类似于cabarc 打包ocx 的效果(点击install 之后其他的都后台做了)
注意:IE中没有弹出.cab安装窗口 如下图:
这就需要设置IE的安全选项
IE浏览器里的 工具—>Internet 选项—>安全
点击“自定义级别” 弹出下列窗口
将ActiveX 控件和插件的相关选项都启用 点击“确定”
再次测试 如果弹出“Windows已经阻止此软件因为无法验证发行者”提示
点击“站点”
将 htt://localhost 和 http://10.122.89.28/ 本机IP 添加进去
下面的复选框的勾去掉才能添加