c#创建vc可调用的com组件方法分享

下面我就来详细讲解一下“C#创建VC可调用的COM组件方法分享”的完整攻略。

1. 确定组件需求

首先,我们需要确定下自己需要开发什么样的组件,这是COM组件开发的第一步。根据需求确定组件接口和类,建议先画一张组件结构图,方便我们更好地理解组件整体架构。

2. 创建COM组件项目

  1. 打开Visual Studio创建新的C# Class Library项目,选择.NET框架版本;
  2. 右键项目 -> 属性 -> 应用程序 -> 程序集信息,勾选“将程序集暴露给COM”;
  3. 修改程序集名称和COM可见名称;
  4. 新增或修改COM接口和类,注释接口和类名称及接口方法。

3. 实现COM接口

新建类实现COM接口,并重写接口中所有的方法,注意COM接口方法的返回值类型要使用COM可支持的类型,并避免使用C#中的特定类型。在实现COM接口方法时,可以调用现有的DLL、ActiveX、OCX组件或者调用Win32 API。

下面是一个示例代码:

using System.Runtime.InteropServices;

[Guid("5B45201D-B7AE-4b4e-85BA-B1A1E513A476")]
public interface ITest
{
    [DispId(1)]
    string GetName();
}

[Guid("5807D10D-EADE-40ea-BFE1-2074E0896A71")]
[ClassInterface(ClassInterfaceType.None)]
public class Test : ITest
{
    public string GetName()
    {
        return "Hello, COM";
    }
}

接着,我们需要对项目进行编译,生成DLL文件。

4. 注册COM组件

COM组件编译完成后,需要进行注册才能被调用。注册有两种方式:一种是使用Visual Studio自带的工具进行注册,另一种是使用Windows提供的Regsvr32工具进行注册。

使用Visual Studio注册方法:

  1. 右键项目 -> 属性 -> 生成事件 -> 自定义命令行,在“后期生成事件”中添加以下代码:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe" $(TargetPath) /tlb:$(TargetDir)$(TargetName).tlb /codebase

注意:上面的路径需要根据本机实际情况进行修改。

使用Regsvr32注册方法:

  1. 开启命令行控制台,输入命令进行注册:
regsvr32 [DLL Path]

5. 调用COM组件

在项目终端或者其他项目中,可以像调用其他COM组件一样,使用C#来调用已注册的COM组件。

以下是一个示例代码:

Type comType = Type.GetTypeFromProgID("Test.Test");
ITest com = Activator.CreateInstance(comType) as ITest;
string name = com.GetName();

以上就是“C#创建VC可调用的COM组件方法分享”的完整攻略,希望能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#创建vc可调用的com组件方法分享 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#中接口(interface)的理解

    C#中的接口(interface)是一种定义了一组方法、属性的抽象类型。它不包含数据或者实现。在接口类型的实现者中实现了这组方法、属性的具体实现。下面讲解C#中接口(interface)的理解,包含如下几个部分: 1. 接口(interface)的定义 在C#中,可以通过如下方式定义一个接口: public interface IExampleInterfa…

    C# 2023年6月3日
    00
  • C#新特性之可空引用类型

    C#新特性之可空引用类型 在 C# 8.0 版本中,引入了一种全新的类型——可空引用类型。这种类型让我们能够更精确的掌控和避免代码中可能存在的 null 引用异常(NullReferenceException)。 可空引用类型的定义 可空引用类型是一种新的变量类型,允许存储 null 值。在使用可空引用类型时,我们必须使用 ? 操作符将类型名称与声明分开。 …

    C# 2023年6月7日
    00
  • C#加密解密类实例程序

    以下是详细的“C#加密解密类实例程序”的攻略: 一、概述 在现代信息技术领域,数据加密已经成为很多应用的基本需求。为此,C#提供了一系列的加密解密类,比如MD5、SHA1、DES、AES等等。本文将主要介绍使用C#实现加密解密的方法,其中涉及到的加密算法是DES和AES。 二、加密解密实例 2.1 DES加密解密 DES是一种常用的对称加密算法,下面是一个使…

    C# 2023年5月31日
    00
  • 深入理解C#中常见的委托

    深入理解C#中常见的委托 委托的定义 委托(Delegate)是一种类型,它可以封装一个方法,使该方法像一个对象实例一样被传递。委托可以像其他任何对象一样进行实例化和调用,其实质是把方法作为参数进行传递和执行。在C#当中,定义委托类型需要使用delegate关键字: delegate void MyDelegate(int param); 以上代码定义了一个…

    C# 2023年5月31日
    00
  • C#文件断点续传实现方法

    C#文件断点续传实现方法攻略 背景和原理介绍 在文件传输中,当传输过程中出现异常,或连接中断,一般需要重新传输。但如果文件太大,重新传输的成本太高,而此时恰好传输过程中已经传输了一部分,通过断点续传可以只续传未完成的部分,可以大幅减少传输成本。文件断点续传实现的原理,在下载时是通过请求服务端时在header部分加上range请求头,标明下载文件的起止断点,服…

    C# 2023年6月1日
    00
  • C#串口通讯概念及简单的实现方法

    C#串口通讯概念及简单的实现方法 什么是串口通讯? 串口通讯是一种通过串行线(即一根数据线)来传输数据的通讯方式。在计算机领域,串口通讯常用于连接计算机和外部设备,如嵌入式设备,传感器等。在C#语言中,可以使用SerialPort类实现串口通讯功能。 SerialPort类的使用方法 在使用SerialPort类之前,需要引用System.IO.Ports命…

    C# 2023年6月7日
    00
  • C# HttpClient 如何使用 Consul 发现服务

    C# HttpClient如何使用Consul发现服务 Consul是一种服务发现和配置工具,可以用于在分布式系统中注册、发现和配置服务。C# HttpClient可以使用Consul来发现服务,以便在分布式系统中进行通信。本文将提供详细的“C# HttpClient如何使用Consul发现服务”的完整攻略,包括如何使用Consul来发现服务,以及示例代码。…

    C# 2023年5月15日
    00
  • 记一次 .NET 某手术室行为信息系统 内存泄露分析

    一:背景 1. 讲故事 昨天有位朋友找到我,说他的程序内存存在泄露导致系统特别卡,大地址也开了,让我帮忙看一下怎么回事?今天上午看了下dump,感觉挺有意思,在我的分析之旅中此类问题也蛮少见,算是完善一下体系吧。 二:WinDbg 分析 1. 到底是哪里的泄露 在.NET高级调试训练营中,我多次告诉学员们,在分析此类问题时一定要搞清楚是托管还是非托管的问题,…

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