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.结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

加密的手机号如何模糊查询?

1 一次加载到内存 实现这个功能&#xff0c;我们第一个想到的办法可能是&#xff1a;把个人隐私数据一次性加载到内存中缓存起来&#xff0c;然后在内存中先解密&#xff0c;然后在代码中实现模糊搜索的功能。 这样做的好处是&#xff1a;实现起来比较简单&#xff0c;成本非常…

实习记录留存

0.前提 实习结束了我留个档方便以后查看 校内实习玩具_哔哩哔哩_bilibili 不如这个爽 带兄弟们飙车_哔哩哔哩_bilibili

无心剑七绝《未晚斋》

七绝未晚斋 倏忽半世莫伤怀 醉爱夕阳未晚斋 汉韵唐风情不尽 东华曼舞咏云台 2024年1月6日 新韵四开平韵 《未晚斋》这首诗&#xff0c;作者无心剑以其独特的笔触&#xff0c;描绘出了一幅宁静、淡雅的画面。诗中表达了对生活的热爱和对美好时光的珍惜。 首句“倏忽半世莫伤…

2024阿里云域名优惠口令更新了吗?在哪领取?

2024年阿里云域名优惠口令&#xff0c;com域名续费优惠口令“com批量注册更享优惠”&#xff0c;cn域名续费优惠口令“cn注册多个价格更优”&#xff0c;cn域名注册优惠口令“互联网上的中国标识”&#xff0c;阿里云优惠口令是域名专属的优惠码&#xff0c;可用于域名注册、续…

安装Keras用于影像分割

conda create -n tfkeras2024 python3.9.18 activate tfkeras2024 pip install tensorflow-gpu2.9.0 pip install keras pip install scipy pip install ipykernel ipython python -m ipykernel install --name tfkeras2024 删除环境conda remove -n tfkeras2024 --all

java基于ssm框架的博客系统的开发论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?

目录 一、像素级OCR统一模型&#xff1a;UPOCR1.1、为什么提出UPOCR&#xff1f;1.2、UPOCR是什么?1.2.1、Unified Paradigm 统一范式1.2.2、Unified Architecture统一架构1.2.3、Unified Training Strategy 统一训练策略 1.3、UPOCR效果如何&#xff1f; 二、OCR大一统模型前…

diffusers加速文生图速度;stable-diffusion、PixArt-α

参考: https://pytorch.org/blog/accelerating-generative-ai-3/ https://colab.research.google.com/drive/1jZ5UZXk7tcpTfVwnX33dDuefNMcnW9ME?usp=sharing#scrollTo=jueYhY5YMe22 大概GPU资源8G-16G;另外模型资源下载慢可以在国内镜像:https://aifasthub.com/ 1、加速…

机器学习股票崩盘预测模型(企业建模_论文科研)AI model for stock crash prediction

对齐颗粒度&#xff0c;打通股票崩盘底层逻辑&#xff0c;形成一套组合拳&#xff0c;形成信用评级机制良性生态圈&#xff0c;重振股市信心&#xff01;--中国股市新展望&#xff01;By Toby&#xff01;2024.1.3 综合介绍 股票崩盘&#xff0c;是指证券市场上由于某种原因&a…

鸿蒙应用中的通知

目录 1、通知流程 2、发布通知 2.1、发布基础类型通知 2.1.1、接口说明 2.1.2、普通文本类型通知 2.1.3、长文本类型通知 2.1.4、多行文本类型通知 2.1.5、图片类型通知 2.2、发布进度条类型通知 2.2.1、接口说明 2.2.2、示例 2.3、为通知添加行为意图 2.3.1、接…

Unity AVProVideo安卓播放视频问题

Pico4播放全景8K视频播放不了&#xff0c;普通视频也播放不了解决方案&#xff1a; 1.Vulkan去掉&#xff0c;或者优先级放下面2.Pico4打包ARM64&#xff0c;插件里arm64里的几个库都设置arm64&#xff0c;平台选择安卓 Pico其他设置参考官方文档即可。

IPD-PDP产品开发流程-PDT产品开发计划Charter文档模板(word)6

今天继续为您分享PDT的产品开发计划Charter模板的内容。 Charter任务书模板内容17&#xff1a;配置管理 项目的配置管理活动应该按照配置管理计划来执行。配置管理计划包括定义项目中的配置项&#xff0c;配置项中需要进行正式变更控制的内容&#xff0c;并为这些配置项和内容…

虚拟机快照

1.为什么使用快照 在学习阶段我们无法避免的可能损坏Linux操作系统。 如果损坏的话&#xff0c;重新安装一个Linux操作系统就会十分麻烦。 VMware虚拟机&#xff08;Workstation和Funsion&#xff09;支持为虚拟机制作快照。 通过快照将当前虚拟机的状态保存下来&#xff0c;在…

搞懂三极管PNP NPN MOS管N-MOS P-MOS

自记&#xff1a;不用看每一个字&#xff0c;只浏览图片即可&#xff0c;遇到不懂的看文字&#xff1a; 用单片机设计PLC时用到NMOS PMOS或继电器输出&#xff1b; 继电器接220VAC 常开点&#xff0c;常闭点&#xff0c;此处不提&#xff1b; P-MOS用于推挽输出&#xff0c;…

关于GitHub的git推送命令时报错密码授权失败问题

参考文章&#xff1a;https://cloud.tencent.com/developer/article/2362326?areaId106001 问题描述 当新建GitHub仓库后&#xff0c;通过git clone xxxx&#xff0c;命令克隆仓库到本地&#xff0c;想要提交修改内容&#xff0c;此时会报错443链接远程仓库失败&#xff0c;解…

第九节HarmonyOS 常用基础组件7-RichText

1、描述 富文本组件&#xff0c;解析并显示HTML格式文本。 富文本&#xff08;RichText&#xff09;是一种特殊的文本格式&#xff0c;它比普通文本更加丰富多彩。富文本可以包含各种字体、颜色、大小、图像、链接、表格、视频等元素&#xff0c;使文本更加生动、有趣。 2、…

一、Qt介绍

一、Qt介绍 1、介绍 Qt是一套程序开发库&#xff0c;但是与MFC&#xff08;依赖于Windows API&#xff09;不同&#xff0c;Qt是跨平台开发库。 Qt获取&#xff1a;[Qt下载地址](https://download.qt.io/archive/qt/)2、Qt安装 QtMinGWSourcesQt ChartsQt Data Visualizatio…

phpstudy面板Table ‘mysql.proc‘ doesn‘t exist解决办法

原因分析&#xff1a;误删了mysql数据库 解决办法如下&#xff1a; 1、停止服务 2、先把mysql文件夹下的data文件夹备份&#xff0c;因为data文件里存有数据库文件。然后再删除data文件。 3、cmd管理员命令进入到mysql中的bin目录下 &#xff0c;执行mysqld --initialize-…

GoLang:gRPC协议

引言 gRPC&#xff08;Google Remote Procedure Call&#xff09;是一个由Google开发的高性能、开源RPC&#xff08;远程过程调用&#xff09;框架。它基于HTTP/2进行数据传输&#xff0c;使用ProtoBuf&#xff08;Protocol Buffers&#xff09;作为接口描述语言&#xff0c;支…

纯生信也能发7+单细胞+WGCNA+预后模型,发sci就是稳

今天给同学们分享一篇生信文章“Comprehensive analysis of scRNA-Seq and bulk RNA-Seq reveals dynamic changes in the tumor immune microenvironment of bladder cancer and establishes a prognostic model”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影…