Метод System.Runtime.InteropServices.Marshal.GetActiveObject

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

GetActiveObject предоставляет функцию COM GetActiveObject из OLEAUT32.DLL; однако последний ожидает идентификатор класса (CLSID) вместо программного идентификатора (ProgID), ожидаемого этим методом. Чтобы получить запущенный экземпляр COM-объекта без зарегистрированного ProgID, используйте вызов платформы для определения функции COM GetActiveObject . Описание вызова платформы см. в разделе "Использование неуправляемых функций DLL".

ProgID и CLSID

Ключи в поддереве реестра HKEY_CLASSES_ROOT содержат различные типы подразделов. Большинство вложенных ключей — это ProgID, которые сопоставляют пользовательскую строку с CLSID. Приложения часто используют эти читаемые пользователем строки вместо числовых CLSID. Часто компонент имеет независимый от версии ProgID, сопоставленный с последней версией компонента, установленного в системе.

Приложения и компоненты в основном используют progID для получения соответствующих CLSID.