Czy istnieje sposób na wyliczenie przez konsumenta wszystkich interfejsów zaimplementowanych przez dany obiekt COM?Jak mogę wykryć wszystkie interfejsy implementowane przez obiekt COM?
Odpowiedz
Możesz wypróbować IDispatch/IDispatchEx, jeśli chcesz po prostu wiedzieć, jakie metody można wywołać od konsumenta.
W COM, metoda QueryInterface na IUnknown nie jest wymagana do ujawnienia, jakie interfejsy mogą zwracać. Pytasz o jeden oparty na jego IID i albo go dostaniesz, albo nie. Implementacja QI w konkretnym obiekcie COM różni się znacznie, chociaż ma być zgodna z wzorcem opisanym przez Microsoft tutaj - http://msdn.microsoft.com/en-us/library/ms682521%28VS.85%29.aspx.
Dependency Walker może zrobić dla ciebie zadanie ...
http://theircorp.byethost11.com/index.php?vw=TypeLib to darmowe narzędzie do zbadania plików TBL.
Czy Dependency Walker ma funkcję do tego? –
Dependency Walker nie pokaże interfejsów, ponieważ jedynymi eksportami są DllGetClassObject, DllRegisterServer, itp. (Dla hostowanego przez DLL modelu COM).
Możesz, jak mówi weismat, sprawdzić pliki TLB. Wiele obiektów COM zawiera osadzone typy w sekcji zasobów pliku wykonywalnego. Za pomocą narzędzia takiego jak hacker zasobów można wyodrębnić TLBy i użyć funkcji LoadTypeLib COM, aby uzyskać wskaźnik do interfejsu ITypeLib (można oczywiście użyć LoadTypeLib/LoadTypeLibEx bezpośrednio z DLL COM lub EXE).
Ten interfejs umożliwia przeglądanie typów zawartych w tym interfejsie.
Ocena zawartości TLB nie spowoduje jednak ujawnienia informacji na temat jakichkolwiek prywatnych interfejsów, których może używać obiekt COM. –
Prywatne interfejsy COM nie pojawią się, masz rację. –
- 1. Dlaczego kompilator C# jawnie deklaruje wszystkie interfejsy implementowane przez typ?
- 2. wynikających interfejsy COM w .NET
- 3. W jaki sposób interfejsy Java są implementowane wewnętrznie? (vtables?)
- 4. Jak mogę wykryć typ biblioteki DLL? (COM, .NET, WIN32)
- 5. COM Interop (jak przekazać tablicę do com) przez klasyczne ASP
- 6. Jak mogę wykryć, że obiekt MediaPlayer zaczyna się odtwarzać?
- 7. Jak mogę przechodzić przez wszystkie trasy?
- 8. Obiekt COM w Javie, możliwe?
- 9. Python: Jak wykryć nazwa urządzenia/ID na szeregowego COM
- 10. Jak mogę uzyskać wszystkie pliki cookie CookieContainer?
- 11. Jak mogę wykryć zakończenie animacji wyzwolonej przez CATransaction
- 12. Jak mogę wykryć strony internetowe farsi przez tika?
- 13. wykryć, czy obiekt jest pusty
- 14. Wykorzystanie PowerShell zawinąć istniejący obiekt COM
- 15. "Nowicjusz" Interfejsy
- 16. Czy margines i dopełnienie są implementowane przez ContentControl?
- 17. Utwórz obiekt COM z pliku bez regsvr32
- 18. Jak mogę wysłać obiekt JSON przez cURL w php
- 19. Jak wykryć zmianę klasy przez DOMAttrModified
- 20. Czy podczas rejestrowania zarządzanego składnika COM potrzebny jest klucz "Kategorie implementowane"?
- 21. Jak zrobić interfejs zapytań PowerShell na obiekt COM
- 22. .NET: Jak ustalić, czy obiekt jest obiektem COM?
- 23. Jak ewoluować interfejs COM?
- 24. Pomiń obiekt Entity przez grupę przez
- 25. W jaki sposób implementowane są Głowy Czatu na Facebooku?
- 26. Jak wykryć, czy obiekt został śmieci zebrane w JavaScript?
- 27. wykryć wszystkie oddziały w obrazie roślinnej
- 28. Dlaczego interfejsy rozszerzają obiekt, zgodnie z formatem pliku klasy?
- 29. Czy można wystawić pole DateTime przez COM?
- 30. Jak mogę automatycznie wykryć serwer proxy?
Jeśli nie zapamiętasz źle, przy pomocy IDispatch/IDispatchEx złapiesz interfejsy z atrybutem oleautomation w IDL. –