這里制作一個簡單的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/
等
