C# Получить ProGID из COM-объекта
Я хотел бы знать, если есть способ получить progId объекта com в C#. Например, у меня есть объект webBrowser, который предоставляет объект документа, который является COM. Есть ли способ выяснить, что такое progID этого объекта документа?
Я знаю, что вы можете получить объект из progID, просто не знаю, как это сделать наоборот.
1 ответ
Решение
Вы можете запросить IPersist
и GetClassID на это.
Это дает вам CLSID
, Затем вызовите ProgIDFromCLSID:
Это дает вам ProgID.
РЕДАКТИРОВАТЬ:
Чтобы запросить интерфейс, вы просто делаете приведение в 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#.)