使用C#创建ActiveX控件步骤详解

需积分: 10 4 下载量 128 浏览量 更新于2024-09-13 收藏 754KB DOC 举报
"C# ActiveX开发手册" C# ActiveX开发是将.NET Framework中的C#类库封装成可以在网页或其他支持ActiveX技术的应用程序中使用的组件。本手册将引导开发者如何在Win7环境下,利用Visual Studio 2010和.NET 4.0框架创建并部署C#编写的ActiveX控件。 首先,开发环境的准备至关重要。在Windows 7操作系统上,我们需要安装Visual Studio 2010,并确保.NET Framework 4.0已经安装。为了制作ActiveX控件的 CAB 文件和进行数字签名,你需要下载并解压makeCAB压缩包,将其放在D:\makeCAB目录下。同时,需要对系统的环境变量进行设置,添加指向makeCAB所在路径的系统变量,以便在命令行中方便地调用相关工具。 接下来,我们开始编写ActiveX控件: 1. 在Visual Studio 2010中,选择“创建新的项目”,然后选择“Windows窗体控件库”模板。 2. 重命名默认生成的UserControl1.cs文件为HelloDanielActiveX.cs,这将是我们的ActiveX控件的主要类。 3. 在设计界面中,拖放一个GroupBox和两个Label控件,以构建控件的基本外观。 4. 为了使控件能被JavaScript调用,我们添加一个公共方法SetTime,该方法接收一个字符串参数,用于设置Label2显示当前时间。在代码中,添加`[Region "Javascript调用ActiveX的方法"]`,并在其中定义SetTime方法。 5. 创建一个接口,用于实现ActiveX的安全性。这里使用了名为IObjectSafety的接口,它是COM接口,用于控制ActiveX对象的安全级别。在接口中定义了GetInterfaceSafetyOptions和SetInterfaceSafetyOptions两个方法,这两个方法分别用于获取和设置安全选项。 接口代码如下: ```csharp using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace HelloDaniel { [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] public interface IObjectSafety { [PreserveSig] int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions); [PreserveSig()] int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions); } } ``` 完成以上步骤后,我们需要对控件进行注册,以便在其他应用程序中使用。这通常涉及在命令行中使用Regasm工具来注册生成的DLL文件。同时,为了能在Web环境中使用,需要创建一个CAB文件,包含ActiveX控件的类型库(TLB)和DLL文件,并进行数字签名,确保安全性和可信任性。 C# ActiveX开发手册详细阐述了如何在C#环境中创建、注册和部署ActiveX控件,以及如何与JavaScript进行交互,这对于开发跨平台的桌面和Web应用程序非常有用。通过学习和实践,开发者可以更好地理解和掌握C#与ActiveX技术的结合应用。