web-dev-qa-db-fra.com

Meilleur moyen d'accéder aux objets COM à partir de C #

Je prévois d'utiliser divers objets qui sont exposés en tant qu'objets COM. Pour les rendre plus faciles à utiliser, je voudrais les encapsuler comme des objets C #. Quelle est la meilleure approche pour cela?

33
Tony the Pony

Si la bibliothèque est déjà enregistrée, vous pouvez effectuer les étapes suivantes pour que Visual Studio génère un assembly d'interopérabilité pour vous:

  • Ouvrez-vous à votre projet Visual Studio.
  • Faites un clic droit sur "Références" (juste sous le projet dans votre explorateur de solutions) et sélectionnez "Ajouter une référence".
  • Sélectionnez l'onglet COM. (Si vous ne voyez pas cela, vous avez un type de projet qui ne prend pas en charge COM.)
  • Sélectionnez le composant avec lequel vous souhaitez interagir.
  • Sélectionnez "ok".

Ce sera une classe ou un ensemble de classes C # qui encapsulent tous les éléments de l'interface COM avec une classe C # normale. Ensuite, vous l'utilisez comme n'importe quelle autre bibliothèque C #. Si l'importation de la référence a bien fonctionné, vous pouvez l'explorer comme n'importe quelle autre référence et les méthodes/structures/classes/constantes devraient apparaître dans cet espace de noms et intellisense.

Cela vous permettra de démarrer, au moins. Si cela est déployé dans un environnement d'entreprise ou que vous pouvez contrôler, cela peut être tout ce dont vous avez besoin.

36
Robert P

Il y a un bon article de MSDN à ce sujet, qui explique le code managé et non managé et vous explique étape par étape comment le faire. http://msdn.Microsoft.com/en-us/library/ms973800.aspx#

S'amuser!

8
user69889

Vous pouvez (initialement) simplement importer la référence. Si vous avez besoin de plus de contrôle (ou obtenez des erreurs de l'importation de VS), vous pouvez utiliser tlbimp dans le sdk de Windows. Cela créera les assemblys d'interopérabilité. Vous pouvez obtenir des définitions de classe à partir de métadonnées.

EDIT: C'est en fait beaucoup plus compliqué si vous voulez travailler avec 64 bits

4
Steve