La mejor forma de acceder a objetos COM desde C #

Estoy planeando usar varios objetos que están expuestos como objetos COM. Para que sean más fáciles de usar, me gustaría envolverlos como objetos C #. ¿Cuál es el mejor enfoque para esto?

Si la biblioteca ya está registrada, puede realizar los siguientes pasos para que Visual Studio genere un conjunto de interoperabilidad para usted:

  • Abierto a su proyecto de Visual Studio.
  • Haga clic derecho en ‘Referencias’ (justo debajo del proyecto en su Explorador de soluciones) y seleccione ‘Agregar referencia’.
  • Seleccione la pestaña COM. (Si no ve esto, tiene un tipo de proyecto que no admite COM).
  • Seleccione el Componente con el que desea interoperar.
  • Seleccione ‘ok’.

Esta será una clase o conjunto de clases de C # que envolverán todas las cosas de la interfaz COM con una clase C # normal. Entonces simplemente lo usa como cualquier otra biblioteca de C #. Si la importación de la referencia funcionó bien, puede explorarla como cualquier otra referencia y los métodos / estructuras / clases / constantes deberían aparecer en ese espacio de nombres e intellisense.

Esto te ayudará a comenzar, al menos. Si esto se implementa en un entorno corporativo o uno que puede controlar, esto puede ser todo lo que necesita.

Hay un buen artículo de MSDN sobre esto, que explica el código administrado y no administrado, y lo guía paso a paso a cómo hacerlo. http://msdn.microsoft.com/en-us/library/ms973800.aspx#

¡Que te diviertas!

Usted puede (inicialmente) solo importar la referencia. Si necesita más control (u obtiene errores de la importación de VS), puede usar tlbimp en el SDK de Windows. Esto creará los ensamblados de interoperabilidad. Puede obtener definiciones de clases a partir de metadatos.

EDITAR: Esto es mucho más complicado si quieres trabajar con 64 bits