¿Hay alguna manera para que un consumidor enumere todas las interfaces implementadas por un objeto COM dado?¿Cómo puedo detectar todas las interfaces implementadas por un objeto COM?
Respuesta
Puede probar IDispatch/IDispatchEx si simplemente desea saber qué métodos son exigibles de su consumidor.
En COM, el método QueryInterface en IUnknown no es necesario para exponer las interfaces que puede devolver. Usted solicita uno basado en su IID y lo obtiene o no. La implementación de QI en un objeto COM particular varía considerablemente, aunque se supone que debe seguir el patrón descrito por Microsoft aquí: http://msdn.microsoft.com/en-us/library/ms682521%28VS.85%29.aspx.
Dependency Walker puede hacer el trabajo para usted ...
http://theircorp.byethost11.com/index.php?vw=TypeLib es una herramienta gratuita para examinar los archivos de TBL.
¿Tiene Dependency Walker una función para esto? –
Dependencia Walker no mostrará las interfaces, ya que las únicas exportaciones son DllGetClassObject, DllRegisterServer, etc. (para COM alojado en DLL).
Puede, como dice weismat, inspeccionar los archivos TLB. Muchos objetos COM contienen typelibs incrustados en la sección de recursos del ejecutable. Con una herramienta como hacker de recursos puede extraer los TLB y usar las funciones COM de LoadTypeLib para obtener un puntero a la interfaz ITypeLib (puede usar LoadTypeLib/LoadTypeLibEx directamente con una DLL COM o EXE, por supuesto).
Con esta interfaz puede iterar sobre los tipos que contiene.
La evaluación de los contenidos de la TLB no expondrá la información sobre las interfaces privadas que pueda estar utilizando el objeto COM. –
Las interfaces COM privadas no aparecerán, tienes razón. –
- 1. Encuentra las interfaces implementadas inmediatamente en un tipo
- 2. ¿Por qué las clases de Java no heredan las anotaciones de las interfaces implementadas?
- 3. ¿Cómo se encuentran las interfaces de un COM sin typelib?
- 4. COM Interfaces duales
- 5. TcpListener: ¿Cómo escuchar un puerto específico en todas las interfaces?
- 6. ¿Debería detectar todas las excepciones?
- 7. El uso de la reflexión para encontrar interfaces implementadas
- 8. Retorno todas las propiedades de un objeto en Objective-C
- 9. UDP-Broadcast en todas las interfaces
- 10. ¿Cómo puedo consumir eventos de un objeto COM enlazado tarde?
- 11. ¿Cómo puedo enumerar todas las propiedades del objeto Math?
- 12. registre automáticamente todas las interfaces con Unity
- 13. Derivación de interfaces COM en .NET
- 14. Mocking COM Interfaces usando Rhino Mocks
- 15. ¿Cómo recuperar todas las ID de objeto?
- 16. C# exponer a COM - herencia de interfaces
- 17. ¿Alguna razón para usar las propiedades implementadas automáticamente sobre las propiedades implementadas manualmente?
- 18. .NET: ¿Cómo puedo determinar si un objeto es un objeto COM?
- 19. ¿Cómo enumerar todas las interfaces de red disponibles?
- 20. ¿Cómo puedo detectar las DLL requeridas por una aplicación?
- 21. ¿Cómo enumerar todas las propiedades de un objeto Powershell?
- 22. ¿Cómo eliminar todas las referencias de un objeto en Python?
- 23. ¿Por qué la vista VS metadatos no muestra explícita de interfaces implementadas miembros
- 24. ¿Cómo funciona la implementación de múltiples interfaces COM en C++?
- 25. ¿Estoy llamando a un objeto .NET o un objeto COM?
- 26. Extensiones de Ruby c: ¿Cómo puedo detectar todas las excepciones, incluidas las que no son StandardErrors?
- 27. ¿Se necesita la clave 'Categorías Implementadas' cuando se registra un Componente COM Administrado?
- 28. ¿Cómo serializar todas las propiedades de un objeto mapeado-NHibernate?
- 29. ¿Por qué el compilador de C# declara explícitamente todas las interfaces que implementa un tipo?
- 30. Registre un objeto COM utilizando InstallShield
Si no recuerdo mal, con IDispatch/IDispatchEx encontrará las interfaces con el atributo oleautomation en el IDL. –