我試過環顧四周,但無法說服自己,因爲COM/ActiveX的世界似乎很混亂。
基本上我想知道的是,鑑於GUID,有沒有辦法知道ActiveX控件公開的所有接口,屬性和方法? 我在某個地方讀過,你只需要問一個特定的財產是否存在。但是在知道那裏有什麼之前,我該如何詢問一個物業?
我猜IDispatch做了類似的事情,但我無法弄清楚如何使用它。如果這是一個有效的工具,那麼最好在C#中使用一小段代碼片段可以幫助我更好地理解。查找ActiveX組件的所有屬性
由於
我試過環顧四周,但無法說服自己,因爲COM/ActiveX的世界似乎很混亂。
基本上我想知道的是,鑑於GUID,有沒有辦法知道ActiveX控件公開的所有接口,屬性和方法? 我在某個地方讀過,你只需要問一個特定的財產是否存在。但是在知道那裏有什麼之前,我該如何詢問一個物業?
我猜IDispatch做了類似的事情,但我無法弄清楚如何使用它。如果這是一個有效的工具,那麼最好在C#中使用一小段代碼片段可以幫助我更好地理解。查找ActiveX組件的所有屬性
由於
ActiveX控件不必是自描述的,並且能夠以枚舉支持的接口和/或性質。與其他COM類一樣,它們實現了某些接口並實現了一組強制接口,這些接口非常適合嵌入到主機應用程序中。也就是說,您最終可能無法找到某個有效的ActiveX控件的屬性。
儘管如此,如果給定的控件能夠完成大部分控件的功能,那麼您可以成功完成這些任務。 Control的COM類通常有一個可以通過查看註冊表引用或IProvideClassInfo
接口發現的類型庫。從那裏開始,當你持有ITypeInfo
接口時,你可以找到IDispatch
這個類的派生接口,然後枚舉使用類型庫的屬性和方法,該類型庫包含這些信息。
您可以在Microsoft的資源工具包中使用OLE/COM Object Viewer。這將列出所有的屬性/方法/事件/等。
您可以使用PowerShell此:
$a = new-object -comobject ProgId
#get properties
$a | Get-Member -membertype properties
#or get all members
$a | Get-Member
而在C#中,你可以使用Type.GetMembers Method。