Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找ActiveX组件的所有属性_C#_Properties_Com_Activex_Idispatch - Fatal编程技术网

C# 查找ActiveX组件的所有属性

C# 查找ActiveX组件的所有属性,c#,properties,com,activex,idispatch,C#,Properties,Com,Activex,Idispatch,我试着环顾四周,但无法用答案说服自己,因为COM/ActiveX的世界似乎非常混乱。 基本上,我想知道的是,给定GUID,有没有一种方法可以知道ActiveX控件公开的所有接口、属性和方法? 我在某个地方读到,你只要问问是否有某个特定的财产就可以了。但是,在知道一处房产有什么之前,我如何询问该房产呢? 我猜IDispatch也有类似的功能,但我不知道如何使用它。如果这是一个有效的方法,一个小片段,最好是C#,可以帮助我更好地理解 感谢ActiveX控件不必是自描述性的,并且能够枚举支持的接口和/

我试着环顾四周,但无法用答案说服自己,因为COM/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#中,您可以使用