查找ActiveX组件的所有属性

我试着环顾四周,但由于COM / ActiveX的世界似乎非常令人困惑,因此无法用自己的答案说服自己。
基本上我想知道的是,鉴于GUID,有没有办法知道ActiveX控件公开的所有接口,属性和方法? 我在某个地方读到你只需询问是否有特定的财产。 但是在知道房产之前我该如何询问房产?
我猜IDispatch做了类似的事情,但我无法弄清楚如何使用它。 如果这是有效的,一个小片段,最好是在C#中,可以帮助我更好地理解。

谢谢

您可以使用PowerShell:

$a = new-object -comobject ProgId #get properties $a | Get-Member -membertype properties #or get all members $a | Get-Member 

在C#中,您可以使用Type.GetMembers方法 。

ActiveX控件不必是自描述的,并且能够枚举支持的接口和/或属性。 与其他COM类一样,它们实现某些接口并实现一组必需的接口,它们适合嵌入到宿主应用程序中。 也就是说,您可能最终无法找到某个有效ActiveX控件的属性。

但是很常见,如果给定控件执行大多数控件的操作,那么您可以成功执行此任务。 Control的COM类通常有一个类型库,您可以通过查看注册表引用或IProvideClassInfo接口来发现它。 从那里拿着ITypeInfo接口,您可以找到该类的IDispatch派生接口,然后使用类型库枚举属性和方法,类型库包含此信息。

您可以使用Microsoft的Resource Toolkit中的OLE / COM对象查看器 。 这将列出所有属性/方法/事件/等。