我想找到一个可以看到所有界面的工具,包括COM(或ActiveX)组件公开的方法,属性,事件。这样的工具可用吗?
答案 0 :(得分:5)
实际上不可能为任何COM对象构建这样的工具,您可能会对特定对象有所帮助。如果类型库可用,那么您可以使用OLEView,或者您可以以编程方式打开和遍历类型库本身。请记住,类型库的内容正是开发人员想要包含在其中的内容;没有什么可以阻止实现更多接口的对象,而不是类型库所说的。
对于没有类型库的对象,不可能生成通用工具:
QueryInterface
的工作方式,如果支持每个可能的接口,您将不得不询问正在调查的对象。这样的工具在哪里获得有关对象可以支持的所有可能接口的列表?虽然由于代理要求而在注册表中注册了某些接口,但并非所有接口都是正确的,并且它们绝不是要求它们。IDispatch
的目的,但对于从IUnknown
派生的接口,无法以编程方式发现有关接口的内容。您还遇到一个问题,即某些对象可能具有代理层为其实现的其他接口,例如,如果接口已经过代理,那么您也可以QueryInterface
从它IProxyManager
虽然对象本身没有实现这个接口(它是代理的一部分)。
答案 1 :(得分:3)
如果组件具有typelib(在资源中或单独提供),则可以使用Visual Studio附带的OLE View。您应该使用“View Typelib”,而不是“绑定到文件”。