2013-01-19 137 views
3

我試過環顧四周,但無法說服自己,因爲COM/ActiveX的世界似乎很混亂。
基本上我想知道的是,鑑於GUID,有沒有辦法知道ActiveX控件公開的所有接口,屬性和方法? 我在某個地方讀過,你只需要問一個特定的財產是否存在。但是在知道那裏有什麼之前,我該如何詢問一個物業?
我猜IDispatch做了類似的事情,但我無法弄清楚如何使用它。如果這是一個有效的工具,那麼最好在C#中使用一小段代碼片段可以幫助我更好地理解。查找ActiveX組件的所有屬性

由於

回答

0

ActiveX控件不必是自描述的,並且能夠以枚舉支持的接口和/或性質。與其他COM類一樣,它們實現了某些接口並實現了一組強制接口,這些接口非常適合嵌入到主機應用程序中。也就是說,您最終可能無法找到某個有效的ActiveX控件的屬性。

儘管如此,如果給定的控件能夠完成大部分控件的功能,那麼您可以成功完成這些任務。 Control的COM類通常有一個可以通過查看註冊表引用或IProvideClassInfo接口發現的類型庫。從那裏開始,當你持有ITypeInfo接口時,你可以找到IDispatch這個類的派生接口,然後枚舉使用類型庫的屬性和方法,該類型庫包含這些信息。

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