【发布时间】:2009-12-03 14:13:11
【问题描述】:
我想找到一个工具,可以查看所有接口,包括由 COM(或 ActiveX)组件公开的方法、属性、事件。有这样的工具吗?
【问题讨论】:
我想找到一个工具,可以查看所有接口,包括由 COM(或 ActiveX)组件公开的方法、属性、事件。有这样的工具吗?
【问题讨论】:
实际上不可能为任何 COM 对象构建这样的工具,您可能对特定对象有一些运气。如果类型库可用,那么您可以使用 OLEView 或者您可以以编程方式打开并遍历类型库本身。请记住,类型库的内容正是开发人员想要包含在其中的内容;没有什么可以阻止对象实现比其类型库所说的更多的接口。
对于没有类型库的对象,不可能生成通用工具:
QueryInterface 的工作方式,您必须询问正在调查的对象是否支持所有可能的接口。这样的工具将在哪里获得相关对象可以支持的所有可能接口的列表?虽然某些接口确实由于代理要求而在注册表中注册,但并非所有接口都如此,也绝不是它们应该如此的要求。IDispatch 的目的,但对于派生自 IUnknown 的接口,无法以编程方式发现有关接口的内容。您还有一个额外的问题,即某些对象可能具有由代理层为它们实现的附加接口,例如,如果一个接口已被代理,那么您也可以将QueryInterface 从它转到IProxyManager对象本身没有实现这个接口(它是代理的一部分)。
【讨论】:
如果组件具有类型库(在资源中或单独提供),您可以使用 Visual Studio 附带的 OLE 视图。你应该在那里使用“View Typelib”,而不是“Bind to File”。
【讨论】: