查找ActiveX组件的所有属性

本文关键字:属性 ActiveX 组件 查找 | 更新日期: 2023-09-27 17:54:36

我试着环顾四周,但无法说服自己一个答案,因为COM/ActiveX的世界似乎非常令人困惑。
基本上我想知道的是,给定GUID,是否有一种方法可以知道ActiveX控件暴露的所有接口,属性和方法?我在某个地方读到,你只需要问一个特定的属性是否存在。但在不知道有什么属性之前,我该如何询问属性呢?
我猜IDispatch也有类似的功能,但我不知道如何使用它。如果这是一个工作,一个小片段,最好是在c#将帮助我更好地理解。

谢谢

查找ActiveX组件的所有属性

你可以使用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控件的属性。

如果给定控件做大多数控件做的事情,那么通常情况下,您可以成功完成此任务。控件的COM类通常有一个类型库,您可以通过查看注册表引用或IProvideClassInfo接口来发现。从那时起,当您持有ITypeInfo接口时,您可以找到该类的IDispatch派生接口,然后使用包含这些信息的类型库枚举属性和方法。

您可以使用Microsoft的资源工具包中的OLE/COM对象查看器。它将列出所有的属性/方法/事件等。