转储COM对象公开的接口

Bin*_*hen 4 com activex

我想找到一个工具,可以看到所有的接口,包括COM(或ActiveX)组件公开的方法,属性,事件.这样的工具可用吗?

Len*_*ate 6

实际上不可能为任何COM对象构建这样的工具,您可能对特定对象有一些好运.如果类型库可用,那么您可以使用OLEView,或者您可以以编程方式打开和遍历类型库本身.请记住,类型库的内容正是开发人员想要包含在其中的内容; 没有什么可以阻止实现更多接口的对象,而不是类型库所说的.

对于没有类型库的对象,不可能生成通用工具:

  • 鉴于它的QueryInterface工作方式,如果它支持每个可能的接口,你将不得不询问被调查的对象.这样的工具在哪里获得有关对象可以支持的所有可能接口的列表?虽然由于代理要求而某些接口在注册表中注册,但并非所有接口都是如此,并且它们绝不是必需的.
  • 一旦你知道一个对象支持给定的接口,你如何计算出接口支持的方法?如果接口派生自IDispatch,则这是可能的,因为这是目的IDispatch,但是对于从中派生的接口,IUnknown无法以编程方式发现有关接口的内容.

您还有一个问题,即某些对象可能有代理层为它们实现的其他接口,例如,如果接口已被代理,那么您也可以QueryInterface从它到它,IProxyManager尽管对象本身没有实现此接口(它是代理的一部分).