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#
Odpowiedz
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.
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
Dlaczego jest trudniej czy inaczej? po prostu użyj polecenia tlbimp z zestawu narzędzi .Net64. –
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. –
Istnieje dobry artykuł z MSDN na ten temat, który wyjaśnia kod zarządzany i niezarządzany, i krok po kroku krok po kroku, jak to zrobić. http://msdn.microsoft.com/en-us/library/ms973800.aspx#
Miłej zabawy!
- 1. Najlepszy sposób uzyskiwania dostępu do bazy danych SQL Server przy użyciu C# .Net
- 2. Przekazywanie tablicy C# obiektów COM do VB6
- 3. Właściwy sposób zwalniania obiektów COM?
- 4. sposób uzyskiwania dostępu do IFA z przeglądarki na iOS6
- 5. Najlepszy sposób dostępu do pikseli w OpenGL?
- 6. Biblioteka Objective-C do uzyskiwania dostępu do SVN
- 7. Błąd dostępu do składników COM
- 8. sposób uzyskiwania dostępu do podstawowej domyślnej kolejki współbieżnej kolekcji blokującej
- 9. Dowolna metoda uzyskiwania dostępu do metod Windows COM przy użyciu języka Java?
- 10. sposób uzyskiwania dostępu do strony wzorcowej ze strony zawartości
- 11. Sposób uzyskiwania dostępu do plików zasobów w pythonie
- 12. npm install podając błąd podczas uzyskiwania dostępu do GIT url
- 13. uzyskiwania dostępu do właściwości szkieletu Parent View
- 14. Używanie obiektów typu c z C
- 15. Wieloplatformowy sposób uzyskiwania wątku w C/C++?
- 16. Dlaczego odmawia się dostępu do portu COM?
- 17. Symfony: błąd podczas uzyskiwania dostępu do tablicy
- 18. Objective-C: Najlepszy sposób uzyskania dostępu do REST API na twoim iPhone'ie
- 19. Efektywny sposób uzyskiwania dostępu do dużych zestawów danych do wyświetlenia na ulotce
- 20. Uwalnianie obiektów COM
- 21. Odbierz Uncaught SecurityError podczas uzyskiwania dostępu do obiektów SVG z Javascript
- 22. Jaki jest najlepszy sposób uzyskiwania/używania kontekstu w AsyncTask?
- 23. Dowolny sposób uzyskiwania dostępu do pamięci podręcznej jądra IIS z programu ASP.NET?
- 24. Brakujący identyfikator_klienta podczas uzyskiwania dostępu do tokenu z połączonym w
- 25. Błąd podczas uzyskiwania dostępu do powłoki sqlite3 z aplikacji django
- 26. Uzyskiwanie dostępu do obiektów z innego procesu
- 27. Najlepszy sposób konwertowania tablicy obiektów na obiekt?
- 28. Najlepsze praktyki uzyskiwania dostępu do danych bez schematów?
- 29. HttpsURLconnection do publikowania i uzyskiwania dostępu do systemu Android
- 30. Używanie WebDAV do uzyskiwania dostępu do skrzynki pocztowej Exchange 2003
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
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#. –