Puede consultar IPersist
y GetClassID en él.
Eso le consigue el CLSID
. A continuación, llame ProgIDFromCLSID:
The pinvoke declaration is here.
que le consigue el identificador de programa.
EDIT:
Para realizar una consulta para una interfaz, que acaba de hacer un reparto en C#:
IPersist p = myObj as IPersist;
if (p != null)
{
// phew, it worked...
}
Detrás de las escenas, esto es lo que está sucediendo realmente, como se muestra aquí en C++:
IUnknown *pUnk = // ... get object from somewhere
IPersist *pPersist = 0;
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist)))
{
// phew, it worked...
}
(Pero nadie se molesta con la escritura de esas cosas con la mano en estos días, como un puntero inteligente puede simular más o menos la experiencia de C#.)