2009-08-10 31 views
8

Me gustaría saber si hay una manera de obtener el progreso de un objeto com en C#. por ejemplo, tengo un objeto webBrowser que expone un objeto de documento que es COM. ¿Hay alguna forma de averiguar cuál es el ID de prog del objeto de documento?C# Obtener progID del objeto COM

Sé que puede obtener el objeto de progID, simplemente no estoy seguro de cómo hacerlo al revés.

Respuesta

8

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#.)

Cuestiones relacionadas