原文地址: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

Code

COM 类(Class):Monitor

Code

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

Code

Monitor实现:

Code

IObjectSafety 是一个接口,它可将其功能显露给 Internet Explorer的“设置脚本安全性”和“设置初始化安全性”安全特性。

3.注册和卸载

如果Class 声明中使用了 InterfaceType ,ComVisible(true) 属性,并且项目属性页设置 点击“生产”的 “为COM interop 注册” 项为TRUE,那么VS编译该项目可自动为Class注册。

也可以使用VS2005 自带工具 regasm.exe 手动注册和卸载 Class,可以用VS 自带工具oleview 查看是否注册成功

4.测试 以及调试

1)创建测试页面     解决方案右键 添加—>新建网站 Default.aspx

Code

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 添加进去

下面的复选框的勾去掉才能添加

VS2005自定义ActiveX控件在asp.net中应用方法的更多相关文章

  1. 网页中"IE限制网页访问脚本或ActiveX控件"的提示问题的解决方法

    以前从来没有注意过"IE限制网页访问脚本或ActiveX控件"的提示问题,对于这个小细节问题,虽然感觉很别扭,但一直没考虑解决方法,今天才发现该问题可以轻松解决,以下做个小小记录. ...

  2. NeatUpload上传控件在asp.net中的使用

    1.先导包,Brettle.Web.NeatUpload.dll导进web层中,再添加到vs控件中. 2.把NeatUpload文件夹放到根目录下. 3.直接拉要用到的控件到页面上,在使用 <U ...

  3. C# winform中自定义用户控件 然后在页面中调用用户控件的事件

    下面是用户控件的代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  4. c# ActiveX 控件的开发

    关于ActiveX控件的开发,网上很多例子,昨天也整整研究一天才捋顺了. 网上大部分例子都是js调用控件的方法,由于要实现在html页面"相应"控件的事件,整整折腾一天. 关键点在 ...

  5. MFC 之ActiveX控件学习

    本文将介绍ActiveX控件的应用与工作原理,读者可以把ActiveX控件看成一个极小服务器的应用程序,它不能独立运行,必须要嵌入到容器程序中与容器一起运行,就像电脑主机中的显卡,它自己在电脑硬件系统 ...

  6. COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

    源代码下载:MyActiveX20081229.rar 声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改 ...

  7. [转]使用C#开发ActiveX控件全攻略

    前言: 这段时间因为工作的需要,研究了一下ActiveX控件.总结如下: 先说说ActiveX的基本概念. 根据微软权威的软件开发指南MSDN(Microsoft Developer Network) ...

  8. ActiveX 控件漏洞挖掘之方法

    ActiveX是微软公司提出,并在1996年被正式命名的组件技术.该技术提供了一种通用的开放程序接口,使用这种技术开发的ActiveX控件可以直接集成到IE浏览器或第三方应用程序中,但由于第三方编程等 ...

  9. MFC-[转]基于MFC的ActiveX控件开发

    作者:lidan | 出处:博客园 | 2012/3/13 16:10:34 | 阅读22次 ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在VC ...

随机推荐

  1. JDBC 通过PreparedStatement 对数据库进行增删改查

    1 插入数据 public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ...

  2. CentOS 7 中 hostnamectl 的使用

    hostnamectl 是在 centos7 中新增加的命令,它是用来修改主机名称的,centos7 修改主机名称会比以往容易许多. 用法 # hostnamectl -h -h --help 显示帮 ...

  3. Linux kernel模块管理相关详解

    Linux内核模块化设计 1. Linux内核设计:单内核.模块化(动态装载和卸载) (1) Linux:单内核设计,但充分借鉴了微内核体系的设计的优点:为内核引入了模块化机制:(2) 内核的组成部分 ...

  4. IMA文件如何打开,winimage使用方

    一般先用UltraISO打开一个系统的镜像文件(.iso).其中有些文件(尤其是.ima,img)比如下面雨林木风Ghost系统盘的这个IMA文件,我们先提取到桌面 用WinImage打开这个文件即可 ...

  5. MyEclipse中使用Junit插件进行单元测试

    http://wenku.baidu.com/view/ec904a116bd97f192279e9a6.html

  6. ZH奶酪:AngularJS判断checkbox/复选框是否选中并实时显示

    最近做了一个选择标签的功能,把一些标签展示给用户,用户选择自己喜欢的标签,就类似我们在购物网站看到的那种过滤标签似的: 简单的效果如图所示: 首先看一下html代码: <!DOCTYPE htm ...

  7. 使用GCD创建单例

    + (KKTextHUB *)sharedTextHUB { static KKTextHUB *sharedHub = nil; static dispatch_once_t onceToken; ...

  8. 微信小程序 - 使用npm(第三方包)

    使用示例: 1. 开启“使用npm模块” 2. 新建 node_modules 文件夹 3. cd到新建 node_modules 所在的目录(非node_modules文件夹内) npm insta ...

  9. OA项目实战学习(7)——初始化数据&amp;权限配置显示

    详细有哪些功能: 初始化数据 权限数据. 超级管理员. Installer.java package cn.xbmu.oa.install; import javax.annotation.Resou ...

  10. &quot;高可用方案工具包&quot; high availability toolkit 1.2 公布了。version 1.2 新增了 负载均衡 load balance 的技术实现

    "高可用方案工具包"  high availability toolkit 1.2 公布了. version 1.2 新增了 负载均衡 load balance 的技术实现. 项目 ...