【问题标题】:Find all properties of an ActiveX component查找 ActiveX 组件的所有属性
【发布时间】:2013-01-02 21:23:28
【问题描述】:

我试着环顾四周,但无法说服自己给出答案,因为 COM/ActiveX 的世界似乎非常混乱。
基本上我想知道的是,给定 GUID,有没有办法知道 ActiveX 控件公开的所有接口、属性和方法? 我在某处读到,您只需要询问是否存在特定属性即可。但是在知道那里有什么之前,我该如何询问房产呢?
我猜 IDispatch 做了类似的事情,但我无法弄清楚如何使用它。如果这是一个可行的方法,那么一个小的 sn-p,最好是在 C# 中,可以帮助我更好地理解。

谢谢

【问题讨论】:

    标签: c# properties com activex idispatch


    【解决方案1】:

    您可以为此使用 PowerShell:

    $a = new-object -comobject ProgId
    #get properties
    $a | Get-Member -membertype properties 
    #or get all members
    $a | Get-Member
    

    在 C# 中,您可以使用 Type.GetMembers Method

    【讨论】:

      【解决方案2】:

      ActiveX 控件不必是自描述的,也不必能够枚举支持的接口和/或属性。与其他 COM 类一样,它们实现了某些接口并实现了一组强制接口,它们非常适合嵌入到主机应用程序中。也就是说,您最终可能无法找到某个有效 ActiveX 控件的属性。

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

      【讨论】:

        【解决方案3】:

        您可以使用 Microsoft 资源工具包中的 OLE/COM Object Viewer。这将列出所有属性/方法/事件/等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-17
          • 1970-01-01
          相关资源
          最近更新 更多