Дізнатися, чи встановлений ActiveX

Якими Win API можна отримати список встановлених у системі ActiveX компонентів? Наприклад, треба дізнатися, чи встановлено "Shockwave Flash" і отримати його версію.

Добридень, Serg!

SI> Якими Win API можна отримати список встановлених у системі ActiveX SI> компонентів? Наприклад, треба дізнатися, чи встановлено "Shockwave Flash" SI> та отримати його версію.

Якщо тобі відомий його ProgID - то найпростіше спробувати створити об'єкт з цим ProgID. Вийшло - отже, встановлено. Не вийшло - значить, не встановлено. (Якщо ProgID невідомий - то, власне, а як ти з ним збирався працювати?)

Всі встановлені в системі ActiveX перераховані в реєстрі, у HKEY_CLASSES_ROOT\CLSID.

Якщо якийсь ActiveX встановлений, то, щоб дізнатися версію, за його ProgID знаходиш CLSID - або сам береш із реєстру, або користуєшся функцією CLSIDFromProgID. Знаючи CLSID, шукаєш відповідний ключ у реєстрі в HKEY_CLASSES_ROOT\CLSID. Знайшов - дивишся, який файл посилається подключ InprocServer32 (буває так, що потрібно дивитися LocalServer32), і дізнаєшся версію цього файлу (як саме - описано в FAQ).

Hello, Serg Ivanov!

SI> Якими Win API можна отримати список встановлених у системі ActiveX SI> компонентів? Наприклад, треба дізнатися, чи встановлений "Shockwave Flash" та SI> отримати його версію.

Список всього що є, проскануй його на пошук потрібного ActiveX, хочеш по CLSID (D27CDB6E-AE6D-11cf-96B8-444553540000), хочеш по ProgId (ShockwaveFlash.ShockwaveFlash.1), хочеш по імені

-- З повагою, Анатолій Підгорецький