C# visual studio COM创建及调用

1.visual studuio操作

        1.1visual Studio创建类库项目ClassLibrary1。

                1.1.1ClassLibrary1项目Class1.cs内容如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;namespace ClassLibrary1
{[ComVisible(true)][Guid("D8C1EAA7-C829-46EF-A42E-2C9130467DB4")]interface IClass1{string Class1Property { get; set; }[DispId(1)]string Class1Function1();[DispId(1)]void Class1Function2(string message);}[ComVisible(true)][Guid("CB5F70B2-3F6C-4410-B5B8-BD9C97042396")][ProgId("ClassLibrary1.Class1")]//通过这个调用该COM组件public class Class1: IClass1{public string Class1Property { get; set; }public string Class1Function1(){Console.WriteLine($"Function1");return "Function1Result";}public void Class1Function2(string message){Console.WriteLine($"Function1:{message}");}}
}

        1.2右键项目,左键”属性“。

        1.3勾选“生成“选项卡的”为COM互操作注册“勾选框。

        1.4勾选”签名“选项卡的”为程序集签名‘勾选框。

        1.5”左键选择强名称密钥文件“下拉框箭头,左键”新建“。

        1.6在”创建强名称密钥“弹窗中输入”密钥文件名称“文本框,取消”使用密码保护密钥文件“勾选框,左键”确定“。

        1.7.保存工程,关闭visual studio后以管理员模式运行,打开项目,右键项目,左键”重新生成“。

2.命令提示符操作

        2.1以管理员模式打开命令提示符(cmd),输入:

                cd C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64

                gacutil -i <dll路径>

                cd C:\Windows\WinSxS\wow64_regasm_b03f5f7f11d50a3a_4.0.15912.0_none_9dcb4fe8bf21aec2

                RegAsm <dll路径>

        随后即可在注册表HKEY_CLASSES_ROOT找到ProgId:ClassLibrary1.Class1。

3.调用              

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){object obj = Activator.CreateInstance(Type.GetTypeFromProgID("ClassLibrary1.Class1"));obj.GetType().GetProperty("Class1Property").SetValue(obj,"hahaha1");Console.WriteLine((string)obj.GetType().GetProperty("Class1Property").GetValue(obj));Console.WriteLine((string)obj.GetType().GetMethod("Class1Function1").Invoke(obj,new object[] { }));obj.GetType().GetMethod("Class1Function2").Invoke(obj,new object[] {"hahaha2" });}}
}

4.结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316109.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring技术内幕笔记之SpringMvc

WebApplicationContext接口的类继承关系 org.springframework.web.context.ContextLoader#initWebApplicationContext 对IOC容器的初始化 SpringMvc如何设计 DispatcherServlet类继承关系 MVC处理流程图如下&#xff1a; DispatcherServlet的工作大致可以分为两个部分&#xf…

使用GPTs+Actions自动获取第三方数据

目录 安装插件与GPT对话联网插件首先,创建GPTs。 Voxscript 官网:https://voxscript.awt.icu/index.htmlOpenAI Schema:https://voxscript.awt.icu/swagger/v1/swagger.yamlServer URL: servers: url: https://voxscript.awt.icu安装插件 要使用这个插件&

RK3568 学习笔记 : 解决 linux_sdk 编译 python 版本报错问题

前言 最近买了 【正点原子】 的 RK3568 开发板&#xff0c;下载了 开发板的资料&#xff0c;包括 Linux SDK&#xff0c;这个 Linux SDK 占用的空间比较大&#xff0c;扩展了一下 VM 虚拟机 ubuntu 20.04 的硬盘空间&#xff0c;编译才正常通过。 编译 RK3568 Linux SDK 时&am…

文件监控软件丨文件权限管理工具

文件已经成为企业最重要的资产之一。然而&#xff0c;文件的安全性和完整性经常受到威胁&#xff0c;如恶意软件感染、人为误操作、内部泄密等。 为了确保文件的安全&#xff0c;文件监控软件应运而生。本文将深入探讨文件监控软件的概念、功能、应用场景和未来发展等方面。 文…

解决jenkins的Exec command命令不生效,或者执行停不下来的问题

Jenkins构建完后将war包通过 Publish Over SSH 的插件发布到服务器上&#xff0c;在服务器上执行脚本时&#xff0c;脚本中的 nohup 命令无法执行&#xff0c;并不生效&#xff0c;我配置的Exec command命令是后台启动一个war包&#xff0c;并输出日志文件。 nohup java -jar /…

webpack 5 loader

webpack 本身不能识别js&#xff0c;json外的资源&#xff0c;所以我们需要借助其他loader来处理对应的文件 CSS Loader&#xff0c;处理css 安装 npm i css-loader style-loader -D css-loader 负责讲css编译成webpack能识别的模块内容style-loader 动态创建<style&g…

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机多特征分类预测

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机多特征分类预测 目录 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现DBO-SVM蜣螂算法优化支持向量机多特征分类预测&#xff08;完整…

计算机网络【Cookie和session机制】

会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份&#xff0c;Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Sess…

安卓学习笔记

一、eclipse问题记录 &#xff08;1&#xff09;."Android requires compiler compliance level 5.0 or 6.0.Found 1.3 instead. Please useAndroid Tools > Fix Project Properties." 问题描述&#xff1a;"Android要求编译器兼容级别为5.0或6.0。但找到的…

HackTheBox - Medium - Linux - Investigation

Investigation Investigation 是一款 Linux 机器&#xff0c;难度为中等&#xff0c;它具有一个 Web 应用程序&#xff0c;可为图像文件的数字取证分析提供服务。服务器利用 ExifTool 实用程序来分析图像&#xff0c;但是&#xff0c;正在使用的版本存在命令注入漏洞&#xff…

一起玩儿物联网人工智能小车(ESP32)——23. 变量与函数(一)

摘要&#xff1a;本文介绍变量和函数的基本知识 经过一个阶段的学习&#xff0c;大家对程序开发也有了一个初步的了解。这只能说是刚刚开始&#xff0c;所能实现的功能还非常的有限。接下来就是拓展一下大家的基本开发技能。 在前面的开发中&#xff0c;大家如果认真的练习并且…

Microsoft Visual Studio 2022 install Project 下载慢

1. 关闭Internet 协议版本6 2. 如果没有效果&#xff0c;打开Internet 协议版本4&#xff0c;更改DNS 3. 在浏览器中下载后安装&#xff0c;下载地址如下&#xff1a; Microsoft Visual Studio Installer Projects 2022 - Visual Studio Marketplace 4. 安装时注意关闭vs&…