AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > .NET技术

C# 程序员参考--COM Interop 第一部分:C# 客户端教程

51自学网 http://www.51zixue.net

COM Interop 提供对现有 COM 组件的访问,而不需要修改原始组件。若要将 COM 代码合并到托管应用程序,请通过使用 COM Interop 实用工具 (TlbImp.exe) 导入相关的 COM 类型。一经导入,COM 类型就可以使用。

此外,COM Interop 还使 COM 开发人员能够像访问其他 COM 对象一样轻松访问托管对象。同样,COM Interop 提供了一个专用实用工具 (RegAsm.exe),此工具将托管类型导出到类型库中,并将托管组件注册为传统 COM 组件。

在运行时,公共语言运行库根据需要在 COM 对象和托管对象之间封送数据。

该教程显示如何使用 C# 与 COM 对象交互操作。

COM Interop 第二部分:C# 服务器教程讲述如何将 C# 服务器与 C++ COM 客户端一起使用。有关两个教程的概述,请参见 COM Interop 教程

教程

C# 使用 .NET Framework 功能执行 COM Interop。C# 支持:

  • 创建 COM 对象。
  • 确定 COM 接口是否由对象实现。
  • 调用 COM 接口上的方法。
  • 实现可由 COM 客户端调用的对象和接口。

.NET Framework 使用 COM Interop 处理引用计数问题,因此不必调用或实现 AddRefRelease

本教程阐述以下主题:

  • PreserveSigAttribute 类

    使用转换而不是 QueryInterface

    只有在可以访问 C# coclass 实现的接口时,C# coclass 才会非常有用。在 C++ 中,可以使用 IUnknown 接口上的 QueryInterface 方法定位对象接口。在 C# 中,通过将 COM 对象显式转换为所需的 COM 接口,可以做到这一点。如果转换失败,则引发无效转换异常:

    // Create an instance of a COM coclass:FilgraphManager graphManager = new FilgraphManager();// See if it supports the IMediaControl COM interface. // Note that this will throw a System.InvalidCastException if // the cast fails. This is equivalent to QueryInterface for // COM objects:IMediaControl mc = (IMediaControl) graphManager;// Now you call a method on a COM interface: mc.Run();

    综述

    下面是一个使用 C# 创建 AVI 文件查看器的完整示例。此程序创建 COM coclass 的实例,将其转换为 COM 接口,然后调用 COM 接口上的方法。

    本节中的示例代表两种方法:

    •  
       
上一篇:C# 程序员参考--COM Interop 第二部分:C# 服务器教程  下一篇:C# 程序员参考--平台调用教程