Вы можете запросить IPersist
и GetClassID для него.
Это дает вам CLSID
. Затем позвоните ProgIDFromCLSID :
Пинвоук декларация здесь.
Это дает вам ProgID.
EDIT:
Чтобы запросить интерфейс, вы просто делаете приведение в C #:
IPersist p = myObj as IPersist;
if (p != null)
{
// phew, it worked...
}
За кулисами, это то, что на самом деле происходит, как показано здесь в C ++:
IUnknown *pUnk = // ... get object from somewhere
IPersist *pPersist = 0;
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist)))
{
// phew, it worked...
}
(Но никто не утруждает себя написанием этого материала вручную, поскольку умный указатель может в значительной степени имитировать опыт C #.)