C# 查找ActiveX组件的所有属性
我试着环顾四周,但无法用答案说服自己,因为COM/ActiveX的世界似乎非常混乱。C# 查找ActiveX组件的所有属性,c#,properties,com,activex,idispatch,C#,Properties,Com,Activex,Idispatch,我试着环顾四周,但无法用答案说服自己,因为COM/ActiveX的世界似乎非常混乱。 基本上,我想知道的是,给定GUID,有没有一种方法可以知道ActiveX控件公开的所有接口、属性和方法? 我在某个地方读到,你只要问问是否有某个特定的财产就可以了。但是,在知道一处房产有什么之前,我如何询问该房产呢? 我猜IDispatch也有类似的功能,但我不知道如何使用它。如果这是一个有效的方法,一个小片段,最好是C#,可以帮助我更好地理解 感谢ActiveX控件不必是自描述性的,并且能够枚举支持的接口和/
基本上,我想知道的是,给定GUID,有没有一种方法可以知道ActiveX控件公开的所有接口、属性和方法? 我在某个地方读到,你只要问问是否有某个特定的财产就可以了。但是,在知道一处房产有什么之前,我如何询问该房产呢?
我猜IDispatch也有类似的功能,但我不知道如何使用它。如果这是一个有效的方法,一个小片段,最好是C#,可以帮助我更好地理解
感谢ActiveX控件不必是自描述性的,并且能够枚举支持的接口和/或属性。与其他COM类一样,它们实现了某些接口,并且实现了一组特定的强制接口,因此很适合嵌入到主机应用程序中。也就是说,您可能最终无法找到某个有效ActiveX控件的属性
但是,如果给定的控件执行大多数控件所执行的操作,通常可以成功完成此任务。控件的COM类通常有一个类型库,您可以通过查看注册表引用或接口来发现它。从那时起,当您按住
ITypeInfo
接口时,您可以找到类的IDispatch
派生接口,然后使用保存此信息的类型库枚举属性和方法。您可以使用Microsoft资源工具包中的。将列出所有属性/方法/事件/等。您可以使用PowerShell实现此目的:
$a = new-object -comobject ProgId
#get properties
$a | Get-Member -membertype properties
#or get all members
$a | Get-Member
在C#中,您可以使用