这里制作一个简单的ActiveX控件
第一步:新建一个Windows窗体控件库项目,如下图
第二步:编写UserControl功能
第三步:设置项目属性。右键“项目-->属性”,在弹出的对话框中勾选使程序集COM可见,如下图
再在上步对话框的生成中勾选为COM互操作注册,如下图
第四步:修改AssemblyInfo.cs和控件类.cs文件
AssemblyInfo.cs
先添加using System.Runtime.InteropServices引用
添加一下内容:[assembly: AllowPartiallyTrustedCallers()]
注销[assembly: Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]
完成后内容如下:
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; // 有关程序集的常规信息通过以下 // 特性集控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: AllowPartiallyTrustedCallers()] [assembly: AssemblyTitle("WinActiveXControlLib")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("WinActiveXControlLib")] [assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // 将 ComVisible 设置为 false 使此程序集中的类型 // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, // 则将该类型上的 ComVisible 特性设置为 true。 [assembly: ComVisible(true)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID //[assembly: Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")] // 程序集的版本信息由下面四个值组成: // // 主版本 // 次版本 // 内部版本号 // 修订号 // // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, // 方法是按如下所示使用“*”: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
UC.cs文件-----自己的控件类cs文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WinActiveXControlLib { [Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]//AssemblyInfo.cs中注释掉的GUID可以直接搬过来 主要是添加这一句 以备后续调用该com public partial class UC : UserControl { public UC() { InitializeComponent(); } private void UC_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) //功能函数 { this.textBox1.Text = "Hello 你好"; } } }
第五步:在项目下添加html或者aspx页面
代码如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title></title> <style type="text/css"> #WinActiveX { height: 107px; width: 370px; } </style> </head> <body> <object id="WinActiveX" classid="clsid:AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B" > </object> </body> </html>
在上面的html代码中,要特别注意classid属性,其值必须是 "clsid:AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B" 注意前面的clsid必须要有
AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B为UC.cs中的 [Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]值
生成解决方案,在IE中浏览Default.htm页面,如下图
PS:这只是一个最简单的ActiveX制作
复杂一点的还需要实现IObjectSafety接口(网上有资料),还可以直接生成安装项目exe给其他web项目调用,这里不再赘述
参考:
http://www.cnblogs.com/zhangs1986/archive/2013/01/18/2866734.html
http://neville.liu.blog.163.com/blog/static/49938781201145103613988/
等