【问题标题】:COM Interface GuidCOM 接口指南
【发布时间】:2011-02-07 12:52:00
【问题描述】:

我不太喜欢 COM 接口,所以我有一个小问题,说我有这个代码:

[Guid("148BD528-A2AB-11CE-B11F-00AA00530503"), 
 InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IEnumWorkItems {
    [PreserveSig()]
    int Next([In] uint RequestCount, [Out] out System.IntPtr Names, 
                       [Out] out uint Fetched);
    void Skip([In] uint Count);
    void Reset();
    void Clone([Out, MarshalAs(UnmanagedType.Interface)] 
                          out IEnumWorkItems EnumWorkItems);
}

我怎么知道“148BD528-A2AB-11CE-B11F-00AA00530503”对应于IEnumWorkItems:http://msdn.microsoft.com/en-us/library/aa380706(VS.85).aspx

如果我想知道这个界面的 GUID:http://msdn.microsoft.com/en-us/library/aa381811(VS.85).aspx 我在哪里可以找到它?

【问题讨论】:

    标签: c# .net com interface


    【解决方案1】:

    我从未遇到过正式的文档 - 但是,有几种方法可以查找它:

    • 在 OLE Viewer(包含在 Visual Studio 工具中)中打开类型库(通常是服务器 DLL 本身)
    • 在 SDK .idl's / .h's 中查找
    • 编写简短的 VC++ 程序并使用 __uuidof(IInterface)
    • 在 HKCR\Interface 下查找(尽管并非所有接口都需要在那里注册)

    【讨论】:

    • 是的,SDK。 MSTask.idl 声明它们。
    【解决方案2】:

    在注册表中,搜索HKEY_CLASSES_ROOT中的类名,你会找到GUID

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2012-03-07
      • 2010-11-13
      • 1970-01-01
      • 2011-02-19
      相关资源
      最近更新 更多