zoukankan      html  css  js  c++  java
  • COM应用总结(3/3)C#中的COM组件

    由于现在.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();
  • 相关阅读:
    我的C#入门之路_Day2
    我的C#入门之路 _ Day1
    【插件开发】VSCode插件开发全攻略(八)代码片段、设置、自定义欢迎页
    【插件开发】VSCode插件开发全攻略(六)开发调试技巧
    【插件开发】VSCode插件开发全攻略(五)跳转到定义、自动补全、悬停提示
    【插件开发】VSCode插件开发全攻略(四)命令、菜单、快捷键
    【插件开发】VSCode插件开发全攻略(三)package.json详解
    【插件开发】VSCode插件开发全攻略(二)HelloWord
    【插件开发】VSCode插件开发全攻略(七)WebView
    public/private/protected的具体区别
  • 原文地址:https://www.cnblogs.com/2018/p/1801793.html
Copyright © 2011-2022 走看看