2009-03-11 18 views
28

Mam zamiar użyć różnych obiektów, które są odsłonięte jako obiekty COM. Aby ułatwić ich używanie, chciałbym je zawinąć jako obiekty C#. Jakie jest najlepsze podejście do tego?Najlepszy sposób uzyskiwania dostępu do obiektów COM z C#

+0

Mads Torgersen język "menedżer produktu" dla C# powiedział w ostatnim podcastu DeepFriedBytes o C#, który dodali lub dodają pewne funkcje, aby ułatwić współdziałanie z COM. Gdybym tylko mógł sobie przypomnieć, co to było ... – f3lix

+0

Myślę, że odnosisz się do "dynamicznego" typu zmiennej przychodzącego w C# 4.0. To nowe słowo kluczowe ułatwia, ale jest już możliwe dzięki C#. –

Odpowiedz

29

Jeśli biblioteka jest już zarejestrowana, można wykonać następujące kroki, aby mieć Visual Studio generuje zespół współdziałania dla Ciebie:

  • Otwórz dla swojego projektu Visual Studio.
  • Kliknij prawym przyciskiem myszy na "References" (tuż pod projektem w Eksploratorze rozwiązań) i wybierz "Add Reference".
  • Wybierz kartę COM.
  • Wybierz komponent, z którym chcesz współdziałać.
  • Wybierz "OK".

To będzie klasa lub zbiór klas C#, które zawijają wszystkie elementy interfejsu COM z normalną klasą C#. Następnie po prostu użyj go jak każdej innej biblioteki C#. Jeśli import referencji działał dobrze, możesz eksplorować go jak każde inne odwołanie, a metody/structs/classes/constants powinny pojawić się w tym obszarze nazw i intellisense.

To pomoże Ci zacząć. Jeśli jest to wdrożone w środowisku korporacyjnym lub takie, które można kontrolować, może to być wszystko, czego potrzebujesz.

4

Możesz (początkowo) po prostu zaimportować referencję. Jeśli potrzebujesz większej kontroli (lub otrzymasz błędy z importu VS), możesz użyć tlbimp w Windowsie SDK. Spowoduje to utworzenie zespołów współdziałania. Możesz pobrać definicje klas z metadanych.

EDIT: To jest rzeczywiście dużo bardziej skomplikowana, jeśli chcesz pracować z 64-bitowym

+0

Dlaczego jest trudniej czy inaczej? po prostu użyj polecenia tlbimp z zestawu narzędzi .Net64. –

+0

Domyślam się, że wszystkie zależne zestawy używające 32-bitowej architektury. Wiem, że 64-bitowe wersje aplikacji korzystających z 32-bitowych zestawów COM Interop nie działają i na odwrót. Zawsze miałem wrażenie, że x64 może działać albo w architekturze, ale najwyraźniej tak nie jest. –

Powiązane problemy