COM接口指导

时间:2010-04-13 16:03:00

标签: c# .net com interface

我对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我在哪里可以找到它?

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

在注册表中,在HKEY_CLASSES_ROOT中搜索班级名称,您会找到GUID