用C#编写ActiveX控件(二)

这里是详细讲解“用C#编写ActiveX控件(二)”的完整攻略。

1. 什么是ActiveX控件

ActiveX控件是一种运行在Windows操作系统上的可重用组件技术,它可以通过Web页面在Internet上进行传播使用,早期广泛应用于Internet Explorer中的插件。ActiveX控件的编写可以使用多种语言实现,如C++、VB、C#等。

2. 使用C#编写ActiveX控件的步骤

C#是一种Microsoft .Net Framework语言,使用C#编写ActiveX控件步骤如下:

(1)使用Visual Studio中的“Class Library”项目模板创建C#库项目。

(2)将C#库项目的输出类型设置为“ActiveX控件”。

可通过在项目属性的“生成”选项卡中设置输出类型为“ActiveX控件”:

输出类型:类库(.dll)

变为:

输出类型:ActiveX控件(.dll)

(3)在C#库项目中添加需要被外部程序调用的方法或属性。

例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace DemoActiveX
{
    [Guid("3B3622EB-7FE9-4F6B-8692-22AB7468686B")]
    public interface ICalculator
    {
        int Add(int a, int b);
        int Multiply(int a, int b);
    }

    [Guid("67230DC0-B7B8-4A7D-A4E3-CD988360ABD2")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComDefaultInterface(typeof(ICalculator))]
    public class Calculator : ICalculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }

        public int Multiply(int a, int b)
        {
            return a * b;
        }
    }
}

上述代码中,创建了一个名为“DemoActiveX”的命名空间,在其中创建了一个名为“ICalculator”的接口和一个名为“Calculator”的类。计算器类提供了两个方法:Add和Multiply,用于计算两个整数的相加和相乘操作。重要的是在类定义上添加了ComVisible(true)的标记,以表明该类对COM组件工作。

另外,还使用了ComVisible(true)标记来公开接口ICalculator并公开无级接口成员。

(4)生成ActiveX控件Dll文件

编译C#库项目后,将生成一个名为“DemoActiveX.dll”的ActiveX控件Dll文件。

(5)注册ActiveX控件Dll文件

运行要注册控件的系统上的命令提示符(以管理员身份运行),输入以下命令进行注册控件操作:

regsvr32.exe DemoActiveX.dll

注意,必须以管理员身份运行CMD窗口。

(6)测试ActiveX控件

可以在HTML页面中使用标记将ActiveX控件嵌入页面中,并调用其中公开的方法和属性进行操作:

例如:

    <html>
        <head>    
            <script type="text/javascript">
                function testActiveX() {
                    var cal = new ActiveXObject("DemoActiveX.Calculator");
                    var addResult = cal.Add(15, 10);
                    var multiplyResult = cal.Multiply(15, 10);
                    alert("Add: " + addResult + "\nMultiply: " + multiplyResult);
                }
            </script>
        </head>
        <body onload="testActiveX();">
            <object id="obj1" classid="clsid:67230DC0-B7B8-4A7D-A4E3-CD988360ABD2" width="0" height="0"></object>
        </body>
    </html>

上述HTML代码创建了一个按钮,当点击该按钮时,将会调用ActiveX控件中的Add和Multiply方法,并将结果弹出对话框。

3. 示例

下面我们会使用两个示例演示如何编写和使用ActiveX控件。

示例一

一个简单的计算器ActiveX控件,包括两个公共方法Add和Multiply。

  1. 创建Visual Studio项目

首先创建一个Class Library (.NET Framework) 项目。

  1. 编写程序

向项目添加请求将计算器类导出为COM组件的特性。使用的特性如下:

  • ComVisible: 用于标识类型是否是公开的COM组件。为可实现的公开COM组件,该属性必须为true。
  • Guid: 用于唯一标识COM组件,必须为一个字符串类型的GUID值。GUID是16进制数字序列,定义了类型、函数库或对象的唯一标识符。GUID实际上是一个“全局唯一标识符”,用于确保在计算机上存储和传输数据时的唯一性。

代码如下:

using System.Runtime.InteropServices;

namespace SimpleActiveX
{
    [ComVisible(true)]
    [Guid("739AED4F-8E9D-4B7D-A28F-DCD3B1FD1173")]
    public interface ISimpleCalculator
    {
        int Add(int x, int y);
        int Multiply(int x, int y);
    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [Guid("EC632335-AF72-4F1A-B8D3-7926C456BB79")]
    public class SimpleCalculator: ISimpleCalculator
    {
        public int Add(int x, int y)
        {
            return x + y;
        }
        public int Multiply(int x, int y)
        {
            return x * y;
        }
    }
}
  1. 生成和发布ActiveX控件

在项目菜单上,选择“生成”->“生成解决方案”选项,生成项目代码。在此过程中,Visual Studio生成ActiveX控件DLL文件。

  1. 将ActiveX控件注册到系统

在Visual Studio“管理器”中,右键单机控件库项目,选择“注册”选项,将ActiveX DLL文件注册到系统。

  1. 测试ActiveX控件

在HTML文件中插入以下代码:

<!DOCTYPE html>
<html>
<head>
    <script language="JavaScript">
        function GetActiveXObject() 
        {
            try {
                var calculatorObject = new ActiveXObject("SimpleActiveX.SimpleCalculator");
                var addResult = calculatorObject.Add(4, 2);
                var multiplyResult = calculatorObject.Multiply(4, 2);
                alert("Addition: " + addResult + "\nMultiplication: " + multiplyResult);
            } catch (err) {
                alert("Cannot create the ActiveX control");
            }
        }
    </script>
</head>
<body>
    <button onclick="GetActiveXObject()">Click here to add and multiply 2 numbers</button>
</body>
</html>
  1. 运行测试程序

运行HTML文件测试ActiveX控件是否能够正常使用。

示例二

该示例编写一个带有激活和退出事件的ActiveX控件。

  1. 创建Visual Studio项目

我们使用“Windows控制台应用程序”模板创建C#控制台应用程序项目。

  1. 编写程序
using System;
using System.Runtime.InteropServices;

namespace TestActiveX
{
    [Guid("DFB982F7-E675-4152-848D-EA7FECF4FB46")]
    public interface ITestActiveX
    {
        void Active();
        void Deactive();
        void Quit();
    }

    [Guid("6DD8547E-84D6-44BE-80D6-FCB2D4C23AE4")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComDefaultInterface(typeof(ITestActiveX))]
    public class TestActiveX : ITestActiveX
    {
        public void Active()
        {
            Console.WriteLine("Active");
        }

        public void Deactive()
        {
            Console.WriteLine("Deactive");
        }

        public void Quit()
        {
            Console.WriteLine("Quit");
        }
    }
}
  1. 生成和发布ActiveX控件

  2. 命令行发布

在生成之后,使用Visual Studio提供的工具regasm.exe命令行注册活动X控件。具体将代码打包到DemoActiveX.dll中:

regasm DemoActiveX.dll /tlb
  • 使用安装程序发布

使用安装程序发布ActiveX控件,步骤包括:

  • 保存并关闭Visual Studio 2019
  • 单击“开始”,然后在搜索框中输入“Visual Studio Installer”。
  • 选择“Visual Studio Installer”并单击“打开”。
  • 单击“新建”。
  • 在“新增项目”窗口中选择“Windows桌面向导”。
  • 单击“下一步”。
  • 在“选择类型”页面上,选择“自定义”并单击“下一步”。
  • 在“选择容器”页面上,选择“MSI源”并单击“下一步”。
  • 在“项目属性”窗口中,更改版本号,然后单击“下一步”。
  • 在“准备内容”页面上,单击“添加”。
  • 在弹出的窗口中选择“项目输出”。
  • 将输出类型从“content files”更改为“ActiveX控件”并单击“OK”。
  • 在“准备内容”页面上,单击“下一步”。
  • 在“输出窗口”(底部的输出视图窗口)中,查看安装器项目创建的输出。
  • 单击“创建”。
  • 双击创建的.msi文件,以启动安装过程。
  • 安装结束后,可以在IE浏览器中使用该ActiveX控件。

  • 使用ActiveX控件

在HTML文件中插入以下代码:

<!DOCTYPE html>
<html>
<head>
    <script language="JavaScript">
        function GetActiveXObject() {
            try {
                var axControl = new ActiveXObject("TestActiveX.TestActiveX");
                axControl.Active();
                axControl.Deactive();
                axControl.Quit();
            } catch (err) {
                alert("Could not create the ActiveX control");
            }
        }
    </script>
</head>
<body>
    <button onclick="GetActiveXObject()">Click here to trigger the ActiveX control</button>
</body>
</html>
  1. 运行测试程序

运行HTML文件测试ActiveX控件,观察控制台输出结果并确保能够正常使用。

以上是使用C#编写ActiveX控件的完整攻略,包含了至少两个示例供参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用C#编写ActiveX控件(二) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Asp.Net Core配置多环境log4net配置文件的全过程

    下面是详细讲解”Asp.Net Core配置多环境log4net配置文件的全过程”的完整攻略: 1. 引入log4net依赖 可以通过Nuget包管理器或手动安装的方式引入log4net,以Nuget包管理器为例,可以在项目中右键点击“管理NuGet程序包”,然后搜索log4net安装即可。 2. 配置log4net log4net的配置文件可以放置在多个环…

    C# 2023年6月3日
    00
  • 详解ASP.NET Core 网站发布到Linux服务器

    详解ASP.NET Core 网站发布到Linux服务器 在ASP.NET Core中,我们可以将网站发布到Linux服务器上。本攻略将详细介绍如何将ASP.NET Core网站发布到Linux服务器上,并提供两个示例说明。 准备工作 在将ASP.NET Core网站发布到Linux服务器之前,我们需要完成以下准备工作: 安装.NET Core SDK和AS…

    C# 2023年5月16日
    00
  • ASP.NET Core 3.x 并发限制的实现代码

    下面提供一份 ASP.NET Core 3.x 并发限制的实现代码完整攻略。 一、限制并发的原理 首先介绍一下限制并发的原理。在 ASP.NET Core 中,可以通过限制同时访问的线程数来限制并发。具体实现方式是使用 SemaphoreSlim 类,该类提供了限制线程访问的功能。 SemaphoreSlim 类具有两个重要的方法 WaitAsync 和 R…

    C# 2023年5月31日
    00
  • Web前端面试笔试题总结

    Web前端面试笔试题总结 在Web前端开发中,面试和笔试是非常重要的环节。本文将总结一些常见的Web前端面试和笔试题,并提供相应的解答。 HTML相关 什么是HTML?HTML5有哪些新特性? HTML是一种标记语言,用于创建Web页面。HTML5是HTML的最新版本,具有以下新特性: 新的语义元素,如header、footer、nav、article、se…

    C# 2023年5月15日
    00
  • C#高效比较两个DataTable数据差异化的方法实现

    C#高效比较两个DataTable数据差异化的方法实现 在C#开发中,比较两个DataTable数据差异化经常需要用到。本文将介绍三种高效的比较两个DataTable数据差异化的方法实现,包括使用Linq、DataView和DataSet的Merge方法。 1. 使用Linq比较数据差异化 使用Linq比较数据差异化可以快速得到两个DataTable数据的差…

    C# 2023年5月15日
    00
  • C#根据前台传入实体名称实现动态查询数据

    C#根据前台传入实体名称实现动态查询数据 在 C# 中,我们可以运用反射技术,根据前台传入实体名称来实现动态查询数据。下面,我们就来具体讲解一下实现步骤。 步骤一:通过反射获取实体类型 我们需要根据实体名称来获取对应的实体类型。通过反射,我们可以使用 Type.GetType(string typeName) 方法来获取类型。示例代码如下: // typeN…

    C# 2023年5月31日
    00
  • 使用EF的Code First模式操作数据库

    下面是使用EF的Code First模式操作数据库的完整攻略: 前置条件 在进行EF的Code First操作时,需要以下几个前置条件: 安装EF NuGet包:在Visual Studio中的NuGet Package Manager中搜索EntityFramework并安装 确定数据库连接字符串:需要确定要连接的数据库以及登录数据库的账号和密码。 创建数…

    C# 2023年6月3日
    00
  • C#实现图形界面的时钟

    下面就来详细讲解一下怎么用C#实现图形界面的时钟。 1. 准备工作 首先,我们需要安装Visual Studio。可以去官网下载安装,根据自己的需求选择不同版本。 2. 创建项目 打开Visual Studio,点击“新建项目” -> “Windows桌面” -> “Windows窗体应用程序”,命名为“Clock”。 3. 添加控件 我们需要添…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部