首页 / 软件开发 / C# / 使用C#实现ActiveX控件开发
使用C#实现ActiveX控件开发2011-10-17 Silent River 要使用C#实现一个ActiveX控件,需要解决三个问题:1.使.NET组件能够被COM调用2.在客户机上注册后,ActiveX控件能通过IE的安全认证3.未在客户机上注册时,安装包能通过IE的签名认证本程序的开发环境是.NET Framework 3.5,工具是Visual Studio .NET 2008,在安装.NET Framework 3.5的客户机上通过测试。下面是实现步骤:(一)创建可从COM访问的程序集首先实现一个对COM可见的程序集,创建类库工程,AssemblyInfo.cs应包含:using System.Runtime.InteropServices;
//使此程序集中的类型对COM组件可见
[assembly: ComVisible(true)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("94882155-3B7C-48e3-B357-234D56D8F15E")]加入以下代 码到AssemblyInfo.cs确保程序集的可访问性:using System.Security;
[assembly: AllowPartiallyTrustedCallers()]注意上面的Guid,如果程序集内部的类 未标注Guid,COM注册的Guid是会新生成的,此处的Guid没有作用。创建用户控件(自定义类待测)IdentityKey.cs,加入:using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace KeyActiveX
{
[Guid("94882155-3B7C-48e3-B357-234D56D8F15E")]
public partial class IdentityKey : UserControl
{
}
}这里的Guid和AssemblyInfo.cs一样,它会在COM注册中成为CLSID并被html以clsid调用 。类库工程属性中,选择生成,勾选COM注册,在html文件中加入<object id="controlbyid" classid="clsid:{94882155-3B7C-48e3-B357 -234D56D8F15E}" ></object>在IE中启用不安全控件,查看html页面,应能访问到控件,现在一个在发布时对COM注册的程序集开发 完成了。使用OLE/COM Object Viewer(安装VC自带)可以在.NET Categories中查看组件和CLSID。