Дізнатися, чи встановлений 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), хочеш по імені
-- З повагою, Анатолій Підгорецький