C# 写COM组件以及组件的调用(Visual Studio 2010)

C#学习笔记002——VS2019 创建COM组件详细步骤 一、创建新项目 二、更改项目属性 三、编写导出接口 (1)新建一个“接口类” (2)为接口打上Guid、InterfaceType特性,Guid必须唯一 粘贴,并去掉“{”和“}” [Guid(“A0CF129B-2AD0-4822-AC95-CC76E1274030”),InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] InterfaceType表求向COM公开的方式,这里选择为以调度的方式向COM公开。 对了,不能忘了加上“u 阅读详情

1. 新建lib

Figure1

2. 将Class1.cs改为我们想要的名字(例如:MyClass.cs)

Figure2Figure3

问是否同时给类改名,确定

Figure4

3. 修改Properties目录下面的AssemblyInfo.cs

Figure5

ComVisible属性设置为true 

原来默认值:

Figure6

改成如下:

Figure

4. 项目->MyLib属性

切换到“生成”选项卡,在底部位置,勾选“为COM互操作注册”,编译的时候就会输出COM 组件对应的tlb文件(VC++调用COM使用),并在编译的时候注册COM组件。

Figure8

5. 需要进行签名,则需要public key和private key,不是必要步骤,不做介绍,当然如果使用了snk文件,则在注册之前需要先通过gacutil /i ArwenAddCom.dll 将dll放入GAC中

6. 写code,创建接口,实现接口,代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
 
namespace MyLib
{
    [ComVisible(true)]
    [Guid("35A5CE1E-551C-41EC-81D4-005318550119")]
    public interface IMyClass
    {
        void Initialize();
        void Dispose();
        int Add(int x, int y);
    }
    [ComVisible(true)]
    [Guid("F0239BF9-0A6E-49A6-8853-BADE1B95E66F")]
    [ProgId("MyLib.MyClass")]
    public class MyClass : IMyClass
    {
        public void Initialize()
        {
            // nothing to do
        }
 
        public void Dispose()
        {
            // nothing to do
        }
 
        public int Add(int x, int y)
        {
            return x + y;
        }
    }
}

7. GUID属性里面的那个字符串,在“工具”菜单下面,“创建 GUID”。作为COM组件和接口的GUID

8. 编译和注册

编译:生成->生成解决方案(F6)。如果没有生成.tlb文件,需要用管理员身份打开Visual Studio 2010,然后重新编译

注册:在start=》all program里面找到visual studio 命令提示符,以管理员身份运行,

Figure 11

在命令提示符下面,进入Dll所在的目录

C:\Windows\system32>cd/d E:\MyLib\MyLib\bin\Debug

如果使用了SNK进行签名的话,要先利用命令 gacutil /i MyLib.dll 将这个DLL加入的全局缓存里

E:\MyLib\MyLib\bin\Debug>gacutil/i mylib.dll

然后用 regasm MyLib.dll 注册这个dll

E:\MyLib\MyLib\bin\Debug>regasm mylib.dll
 

Figure 12

9. 使用COM组件

至于C#调用COM组件很简单,在注册COM组件之后,就可以添加reference,然后在COM列表里找到该dll.

VC++ 调用C# COM组件,也比较简单,只不过因为是利用COM组件编译出来的tlb文件(其实VC++写的COM组件也会编译出该文件,只不过一般不使用),没有.h和.c文件,所以特别注意一下。

a.引用tlb文件

在需要COM组件的文件里面,添加 #import "mylib.tlb" rename_namespace("namespace"),编译器

b.由于用的tlb文件,在使用的时候,返回值不一定是HRESULT,如果是在接口函数里面设置了返回值,则类型就是返回值的类型,如果没有返回值,就是HRESULT.

 

Visual Studio 2010与MATLAB混合编程实战指南 Visual Studio 2010 是微软推出的一款功能强大的集成开发环境(Integrated Development Environment,IDE),为开发人员提供了一个统一的代码编辑、调试、测试和部署平台。其IDE结构由多个组件构成,包括代码编辑器、项目管理器、调试器、图形界面设计器、数据库工具等模块。 阅读详情

相关推荐

Visual Studio 2010与C#实用编程实例集锦

在Windows窗体应用程序(WINFORM)中实现多条件动态查询,意味着用户可以根据需要输入一个或多个查询参数,以筛选并展示特定的数据集合。这种查询模式通常用于复杂的数据检索场景,如数据库管理、库存跟踪、客户信息管理等。动态查询提供了灵活性和扩展性,使其适用于各种用户界面场景,并满足不同用户的需求。SQLDMO(SQL Distributed Management Objects)是微软提供的一组COM组件,允许开发者以编程的方式管理SQL Server数据库。

weixin_42186015的博客 1080

书小宅之C#——调用COM组件

在项目文件名上右击->引用->添加引用-> .net/Com 下找到对应的组件【如添加Microsoft.Office.Interop.Word 14.0.0.0的引用 】 1、(一般电脑上下载了相关的组件,在注册表中中注册DUID项的在Com里都能找到)。 2、com组件有独立的类型库文件,基于接口进行通信,是非托管对象,可以不需要.net框架而直接运行;Com组件每次只能注.........

qq_36447261的博客 5227

Visual Studio 2010十大实用插件合集打包下载

Visual Studio 2010通过扩展性API(如MPF、EnvDTE)和组件对象模型(COM)构建插件体系,允许开发者在不修改核心IDE的前提下增强功能。插件以DLL形式注册至AddIn目录,并通过.addIn配置文件声明加载时机与宿主环境。// 示例:插件注册接口调用逻辑(简化)// 注册命令、添加菜单项、绑定事件该机制实现了松耦合集成,保障了原生稳定性的同时支持深度定制,为代码智能、版本控制、UI优化等场景提供底层支撑。

weixin_33608403的博客 1283

C#调用COM接口的三种方式

C# 调用COM接口 获取HRESULT而不是抛出异常

sinat_35549832的博客 1万+

C# 4.0与Visual Studio 2010:完整示例与实战指南

可选参数是指在方法定义时可以指定默认值的参数,调用方法时可以省略这些参数。C# 4.0 引入的可选参数特性,使得开发者能够定义方法时提供一组参数及其默认值,而在方法调用时,可以根据需要选择性地提供这些参数。// 使用可选参数调用// 输出:Hello, John Doe!在这个例子中,如果没有提供age参数,那么age将使用其默认值30。可选参数必须位于方法定义的最后,它们总是遵循那些必须显式提供的参数。

weixin_35761094的博客 844

Visual Studio 2010-2013 Tools for Unity集成开发插件合集

Visual Studio Tools for Unity(VSTU)是微软与Unity联合推出的一套深度集成开发工具,旨在提升C#脚本在Unity项目中的编辑、调试与分析效率。它打通了Visual Studio强大的IDE能力与Unity游戏引擎的实时交互,实现代码智能感知、断点调试、错误导航等关键功能。Visual Studio 2010 Tools for Unity 并非一个独立运行的应用程序,而是作为 Visual Studio 扩展插件存在的集成开发辅助套件。

weixin_42298254的博客 1210

python调用com组件_Python调用C# Com dll组件的过程详解

下面小编就为大家带来一篇Python调用C# Com dll组件实战教程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB、CBC、CFB、OFB,这四种用的是RijndaelManaged类),Python下Crypto库AES也只有这四种模式,进而Python下无法...

weixin_39624733的博客 1758

c#中调用com组件

实现在c#中调用com组件

Windows编程:下载与安装 Visual Studio 2010

Windows 程序设计

2401_82825368的博客 2799

C# COM操作类 发送命令&接收命令

C# COM操作类 发送命令&接收命令

C#调用COM组件方法总结

整理的C#调用COM组件方法总结,总结的网上介绍的不少方法,可以参考着看一下

VC调用C#的COM组件(DLL)

VC调用C#的COM组件(DLL) 转载地址:http://hi.baidu.com/hot_blood2001/blog/item/0454e880ccc9ffdc9023d94c.html 2010年03月11日 星期四 13:42 假设要进行二次开发的程序为 A.exe,要增加的功能使用增加DLL的方法来完成,设为Cdll.DLL,其中含有A、B、C等方法。

blacet的学习点滴 1274

如何在C#中调用COM组件

一、引言   COM(Component Object Modele,组件对象模型)是微软以前推崇的一个开发技术,所以现在微软的很多产品都用到了COM组件,如Office,IE 等。然而如果.NET 平台下的程序想访问COM组件的方式来实现某个功能怎么办呢? 正是由于开发人员有这个需求,所以微软在.NET FrameWork中为COM和托管代码之间进行互操作提供了支持,这种互操作性的技术就是COM Interop。 但是COM Interop(COm互操作)这项技术,不仅支持在托管代码中使用COM对象,并且也支持在COM中使用托管对象,本专题只针对在.NET中调用COM对象来介绍,由于COM技

C#编写COM组件

C#编写COM组件  软件:Microsoft VisualStudio 2010 1、新建一个类库项目 2、将Class1.cs改为我们想要的名字(例如:MyClass.cs) 问是否同时给类改名,确定 3、修改Properties目录下面的AssemblyInfo.cs ComVisible属性设置为true 改成下图 4

Jaylon Wang的专栏 2万+

python轮胎缺陷检测_基于深度学习的轮胎缺陷无损检测与分类技术研究

基于深度学习的轮胎缺陷无损检测与分类技术研究【摘要】:随着汽车行业快速发展及汽车保有量的持续增长,大大增加了对轮胎的需求,而轮胎质量在很大程度上决定了轮胎的使用寿命,也是在行驶过程中对人们生命财产安全的保障,同时对轮胎进行在线质量检测也便于轮胎生产企业及时发现生产线中存在的不合格产品,以此来调整机械设备甚至轮胎的生产工艺,避免造成生产材料的浪费。因此,检测轮胎质量是轮胎生产过程中必不可缺少的一部分...

weixin_39689428的博客 1424

SAP数据导入避坑指南:财务期初上线实操全流程(含常见错误排查)

本文详细解析了SAP财务期初数据导入的全流程,包括数据准备、主数据标准化、余额与未清项导入等关键步骤,并提供了常见错误排查和解决方案。特别强调了过渡科目和存货价值的处理技巧,帮助企业在SAP系统上线时避免数据导入陷阱,确保财务数据的准确性和系统平稳运行。

weixin_30832143的博客 396

C++调用C#编写的COM组件

??????C++??????????C#???????C#?DLLC++????????????????????C#??COM???C++??? ??????????????? ????????????????????????????? ???VS2010 ???win764 32 ????C#??COM?? ????????????   ??   ??

MR_Sjx的博客 1637

Xilinx Vitis HLS教程1--Vitis HLS概述[01/12]

Xilinx Vitis HLS教程[01/10]前言1. Vitis HLS简介1.1 软件工程师的设计原则1.1.1 简介1.1.2 吞吐量和性能1.2.3 架构问题1.2.4 FPGA编程的3大范式1.2.4.1 生产者-消费者范式1.2.4.2 流式数据范式1.2.4.3 流水线范式1.2.5 3种范式结合 前言 项目中使用到Xilinx Zynq UltraScale+ MPSoC ZCU102 开发板,领导指示研究"xilinx软件自带的c语言综合器"。对于一个硬件一窍不通的我来说,甚至不知道

B10030607的博客 5234

Visual Studio 2010(c#)开发ActiveX控件及制作CAB包总结(1)

1、开发及测试环境:(1)开发环境:          Visual Studio 2010           cabsdk(下载地址:http://support.microsoft.com/kb/310618)(2)测试环境:          Windows xp          IE62、创建项目我这里创建了三个项目:(1)HelloBossma :项目模板:Windows窗体控件库(2)HelloBossmaSetup:项目模板:安装项目 (3)Web:项目模板:ASP.NET 网站3、Hel

3752

植物叶绿体基因组分析全攻略:从共线性到密码子偏好性

本文全面解析植物叶绿体基因组分析流程,从共线性分析到密码子偏好性研究。详细介绍了叶绿体基因组结构特征、测序数据获取与质量控制、基因组组装与注释方法,以及比较基因组学和进化分析技术。特别关注IR区边界变异分析和选择压力评估,为植物系统发育研究和物种鉴定提供实用指南。

weixin_28475533的博客 221

多尺度仿真软件:Copasi_(1).Copasi概述

Copasi(Complex Pathway Simulator)是一款开源的多尺度仿真软件,专为生物化学、系统生物学和合成生物学领域的研究人员设计。它不仅能够模拟细胞内和细胞间的生化反应网络,还能处理代谢途径、信号传导途径和基因调控网络等多种复杂系统。Copasi提供了用户友好的图形界面和强大的命令行接口,支持多种仿真算法和分析工具,使用户能够高效地进行模型构建、仿真和分析。Copasi允许用户创建自定义报告,以便生成特定格式的仿真结果。用户可以通过图形界面或命令行创建自定义报告。

kkchenjj的博客 856

使用C#在VS2010上开发Com控件给JS调用,基于NET2.0

工作中实际处理问题用到的,写下来记录下,怕到时候原文链接404了,顺便帮助同样遇到这个问题的人。 原文链接:https://blogs.msdn.microsoft.com/asiatech/2011/12/05/how-to-develop-and-deploy-activex-control-in-c/ 想要不遇到什么问题顺利过关请先准备好VS2010开发工具,当然使用后续版本同样能完成C...

ren7wei的博客 332

安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1478
上一篇: COM组件以及套间
下一篇: 非用户管理员权限下对系统目录的读写-virtual store
泉水老叮当
博客等级 码龄10年 9粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值