应该是一个简单的问题,但搜索文档让我疯了。假设我有一个coclass或接口的ITypeInfo指针。如何获取该类或接口的名称?
答案 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
进行运行时强制转换。