COM应用总结(3/3)C#中的COM组件

简介: 由于现在.net的应用比较广泛,日常的工作中会经常地遇到C#和COM的互操作问题,为了更完整,本篇把C#处理COM的情况汇总以下 C#中对COM的互操作很是方便,具体如下: NO PIA C# 4.

由于现在.net的应用比较广泛,日常的工作中会经常地遇到C#和COM的互操作问题,为了更完整,本篇把C#处理COM的情况汇总以下

C#中对COM的互操作很是方便,具体如下:

NO PIA

C# 4.0引入的动态特性
  Guid id;
             id = new Guid("D7D0B2E8-1795-4E23-96BF-F07EC28FB44C");
             dynamic complug = Activator.CreateInstance(Type.GetTypeFromCLSID(id));
             string t="dlr", r ;
             complug.DoWork(t, out r);
             Console.WriteLine(r);

PIA

首先IDE中Add Refernce引用组件,此时自动生成互操作的库(也可使用tlbimp.exe手动生成)

ComPlugLib.MyKit kit = new ComPlugLib.MyKit();
             kit.DoWork(t, out r);
 
如果需要管理COM的生命周期[比如COM EXE进程的调用后即时结束等],可以使用
Marshal.*** 处理com对象

如下是对于Office操作的C#不同版本比较

由于现在.net的应用比较广泛,日常的工作中会经常地遇到C#和COM的互操作问题,为了更完整,本篇把C#处理COM的情况汇总以下

C#中对COM的互操作很是方便,具体如下:

NO PIA

C# 4.0引入的动态特性
  Guid id;
             id = new Guid("D7D0B2E8-1795-4E23-96BF-F07EC28FB44C");
             dynamic complug = Activator.CreateInstance(Type.GetTypeFromCLSID(id));
             string t="dlr", r ;
             complug.DoWork(t, out r);
             Console.WriteLine(r);

PIA

首先IDE中Add Refernce引用组件,此时自动生成互操作的库(也可使用tlbimp.exe手动生成)

ComPlugLib.MyKit kit = new ComPlugLib.MyKit();
             kit.DoWork(t, out r);
 
如果需要管理COM的生命周期[比如COM EXE进程的调用后即时结束等],可以使用
Marshal.*** 处理com对象

如下是对于Office操作的C#不同版本比较

//C# 4.0

            dynamic word = Activator.CreateInstance(Type.GetTypeFromProgID("Word.Application"));
            word.Visible = true;
 
            var WordApplication = new Microsoft.Office.Interop.Word.Application();
            WordApplication.Visible = true;
            object missing = System.Reflection.Missing.Value;
            object file = @"c:\test.txt";
            object visible = true;
            object readOnly = false;
 
 // 需要引入 Microsoft.Office.Interop.Word.dll(VS安装)
             //C# 4.0 Named and Optional Parameters
             var betterWay = WordApplication.Documents.Open(file, ReadOnly: true, Visible: true);
             betterWay.Activate();
             betterWay.Close();
 
             //C# 1.0~3.5(.net3.0有一个简化的操作库Office) http://www.microsoft.com/downloads/details.aspx?FamilyID=46B6BF86-E35D-4870-B214-4D7B72B02BF9&displaylang=en VSTO_PTExtLibs.exe
             Document aDoc = WordApplication.Documents.Open(
             ref file, ref missing, ref readOnly, ref missing,
             ref missing, ref missing, ref missing, ref missing,
             ref missing, ref missing, ref missing, ref visible,
             ref missing, ref missing, ref missing, ref missing);
             aDoc.Close();
相关文章
|
12月前
|
存储 监控 算法
基于 C# 时间轮算法的控制局域网上网时间与实践应用
在数字化办公与教育环境中,局域网作为内部网络通信的核心基础设施,其精细化管理水平直接影响网络资源的合理配置与使用效能。对局域网用户上网时间的有效管控,已成为企业、教育机构等组织的重要管理需求。这一需求不仅旨在提升员工工作效率、规范学生网络使用行为,更是优化网络带宽资源分配的关键举措。时间轮算法作为一种经典的定时任务管理机制,在局域网用户上网时间管控场景中展现出显著的技术优势。本文将系统阐述时间轮算法的核心原理,并基于 C# 编程语言提供具体实现方案,以期深入剖析该算法在局域网管理中的应用逻辑与实践价值。
286 5
C#||应用框体设计计算器
C#||应用框体设计计算器
183 0
|
存储 安全 物联网
C# 在物联网 (IoT) 应用中的应用
本文介绍了C#在物联网(IoT)应用中的应用,涵盖基础概念、优势、常见问题及其解决方法。重点讨论了网络通信、数据处理和安全问题,并提供了相应的代码示例,旨在帮助开发者更好地利用C#进行IoT开发。
706 3
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
246 3
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
388 2
|
编译器 C# Android开发
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
864 8
|
存储 C# 开发者
枚举与结构体的应用:C#中的数据组织艺术
在C#编程中,枚举(`enum`)和结构体(`struct`)是非常重要的数据类型。枚举用于定义命名常量集合,提高代码可读性;结构体则封装相关数据字段,适合小型数据集。本文从基本概念入手,探讨它们的使用技巧、常见问题及解决方案,帮助开发者更好地利用这些特性构建健壮的应用程序。
263 9
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
345 2
|
C#
C# 一分钟浅谈:循环结构 for 和 while 的应用
【9月更文挑战第1天】循环结构是编程中的基础概念,C# 中常用的 `for` 和 `while` 循环允许重复执行代码直至满足特定条件。`for` 循环基于计数,适用于已知循环次数的情况;`while` 循环基于条件,适用于未知循环次数的情况;`do-while` 循环则至少执行一次循环体。本文详细介绍了这些循环的语法和示例,并探讨了常见问题及其解决方法,如循环条件和更新表达式的错误设置。通过综合应用示例(如计算阶乘和斐波那契数列),帮助读者更好地理解和掌握循环结构的使用方法。正确使用循环可以提高程序的效率和可读性。
515 2
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
351 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码