2009-08-10 23 views
8

C# içinde bir com nesnesinin progunu almanın bir yolu olup olmadığını bilmek istiyorum. örneğin - COM olan bir belge nesnesini gösteren bir webBrowser nesnesine sahibim. Bu belge nesnesinin progID'ini anlamanın bir yolu var mı?C# COM nesnesinden progID alın

Nesneyi progID'den alabileceğinizi biliyorum, sadece başka yoldan nasıl yapılacağından emin değilsiniz.

cevap

8

Üzerinde IPersist ve GetClassID sorgulayabilirsiniz.

Bu, CLSID'u alır. Sonra ProgIDFromCLSID çağırır: Progıd'ın alır

The pinvoke declaration is here.

.

DÜZENLEME: Sahne arkası

IPersist p = myObj as IPersist; 
if (p != null) 
{ 
    // phew, it worked... 
} 

, bu C++ burada gösterildiği gibi aslında neler olduğunu ise:

bir arayüz sorgulamak için, sadece C# bir döküm yapmak

IUnknown *pUnk = // ... get object from somewhere 

IPersist *pPersist = 0; 
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist))) 
{ 
    // phew, it worked... 
} 

(Ama kimse hemen hemen C# deneyimi simüle edebilirsiniz akıllı işaretçi olarak, bu gün elle o haberleri yazan ile rahatsız ediyor.)