查找ActiveX组件的所有属性

时间:2013-01-19 05:02:39

标签: c# properties com activex idispatch

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

由于

3 个答案:

答案 0 :(得分:4)

您可以使用PowerShell:

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

在C#中,您可以使用Type.GetMembers Method

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以使用Microsoft资源工具包中的OLE/COM Object Viewer。这将列出所有属性/方法/事件/等。