Esiste un modo per un utente di enumerare tutte le interfacce implementate da un determinato oggetto COM?Come posso rilevare tutte le interfacce implementate da un oggetto COM?
risposta
È possibile provare IDispatch/IDispatchEx se si desidera semplicemente sapere quali metodi sono richiamabili dal consumatore.
In COM, il metodo QueryInterface su IUnknown non è necessario per esporre quali interfacce potrebbero restituire. Ne chiedi uno basato sul suo IID e lo ottieni o meno. L'implementazione del QI in un particolare oggetto COM varia considerevolmente anche se si suppone che segua lo schema descritto da Microsoft qui - http://msdn.microsoft.com/en-us/library/ms682521%28VS.85%29.aspx.
Dependency Walker potrebbe fare il lavoro per voi ...
http://theircorp.byethost11.com/index.php?vw=TypeLib è uno strumento gratuito per esaminare i file TBL.
Dependency Walker dispone di una funzionalità per questo? –
Dipendente Walker non mostrerà le interfacce in quanto le sole esportazioni sono DllGetClassObject, DllRegisterServer, ecc. (Per COM host DLL).
È possibile, come dice weismat, ispezionare i file TLB. Molti oggetti COM contengono typelibs incorporati nella sezione delle risorse dell'eseguibile. Con uno strumento come resource hacker è possibile estrarre i TLB e utilizzare le funzioni COM LoadTypeLib per ottenere un puntatore all'interfaccia ITypeLib (è possibile utilizzare LoadTypeLib/LoadTypeLibEx direttamente con una DLL COM o EXE, ovviamente).
Con questa interfaccia è possibile scorrere sui tipi contenuti all'interno.
Tuttavia, la valutazione dei contenuti del TLB non espone le informazioni su eventuali interfacce private che l'oggetto COM può utilizzare. –
Le interfacce COM private non verranno visualizzate, hai ragione. –
- 1. Interfacce COM di trasmissione
- 2. Interfacce automatiche implementate negli array
- 3. Perché il compilatore C# dichiara esplicitamente tutte le interfacce di un tipo implementate?
- 4. Ottenere argomenti tipo di interfacce generiche implementate da una classe
- 5. Interfacce doppie COM
- 6. Come si consumano eventi da un oggetto COM tardivo?
- 7. Utilizzando un decoratore ottenere l'elenco delle interfacce implementate
- 8. Dato un tipo C#, Ottieni le sue classi di base e le interfacce implementate
- 9. Mocking delle interfacce COM usando Rhino Mocks
- 10. Come posso ottenere tutte le immagini da un file qrc?
- 11. Come posso elencare TUTTE le concessioni ricevute da un utente?
- 12. Come posso selezionare tutte le caselle da tutte le pagine in un DataTable jQuery
- 13. .NET: come determinare se un oggetto è un oggetto COM?
- 14. Come creare un oggetto COM in F #
- 15. Crea un oggetto COM da un file senza regsvr32
- 16. Come funziona l'implementazione di più interfacce COM in C++?
- 17. TcpListener: come ascoltare sulla porta specifica su tutte le interfacce?
- 18. Ruby c extensions: come posso rilevare tutte le eccezioni, incluse le cose che non sono StandardErrors?
- 19. Sto chiamando un oggetto .NET o un oggetto COM?
- 20. Come vengono implementate le funzioni iomanip?
- 21. Come elencare tutte le proprietà di un oggetto PowerShell?
- 22. htaccess redirect .co.uk to .com per tutte le pagine
- 23. Come posso rilevare le funzioni Javascript chiamate?
- 24. Come posso ottenere un oggetto HDC da un oggetto CDC?
- 25. Come organizzare le interfacce TypeScript
- 26. Come posso rilevare le modifiche su% ENV?
- 27. Come vengono implementate le enumerazioni in Java?
- 28. Come creare un oggetto COM in un'applicazione UWP? (C#)
- 29. Esplora un oggetto COM in PHP
- 30. C/C++ Linux MAC Address di tutte le interfacce
Se non si ricorda male, con IDispatch/IDispatchEx si cattureranno le interfacce con l'attributo oleautomation nell'IDL. –