如何使用ITypeInfo指针获取类型的名称?

时间:2010-09-19 16:32:28

标签: com automation

应该是一个简单的问题,但搜索文档让我疯了。假设我有一个coclass或接口的ITypeInfo指针。如何获取该类或接口的名称?

2 个答案:

答案 0 :(得分:7)

确定。事实证明这很简单。您只需调用ITypeInfo.GetDocumentation方法,并将成员标识设置为MEMBERID_NIL( - 1)。像这样:

CComBSTR typeName;
hr = typeInfo->GetDocumentation( MEMBERID_NIL, &typeName, NULL, NULL, NULL );

如果您使用.NET编程,可以通过Marshal.GetTypeInfoName方法为您方便地执行上述操作:

// using System.Runtime.InteropServices;
string typeName = Marshal.GetTypeInfoName(typeInfo);

答案 1 :(得分:4)

简短回答:您无法使用ITypeInfo。您可以使用Win32 ProgIDFromCLSID API获取类的prog ID。在COM中,实现COM接口或co-class的底层C ++,Visual Basic或.NET类的名称实际上毫无意义。只有接口ID,类ID和编程ID才具有超出同类实现源代码的重要性:只有这些可用于使用CoCreateInstance等激活COM对象和使用QueryInterface进行运行时强制转换。