Связь ProgID и расширения файла

Я работаю над программой, используя проект JACOB (JAva COM Bridge).

Есть файл для открытия, передается полное имя (например, c:\test\test.xls). Чтобы JACOB создал новый ActiveXComponent, ему необходимо передать ProgID или CLSID. (Например, Excel.Application или Word.Application, но вне области MS есть также Autocad.Application и т. д.)

Итак, как можно связать расширение файла или тип MIME с данным ProgID или CLSID? Есть ли другая база данных, которую я могу подключить к Win32_ProgIDSpecification? Win32_ProgIDSpecification содержит все идентификаторы ProgID.


person Community    schedule 18.02.2010    source источник


Ответы (2)


Какой-то абстрактный объект, который вы получаете с помощью CLSID или PROGID, ничего не может сделать с именем файла. Он может открыть файл только через некоторые методы интерфейса, которые в большинстве случаев различны.

Для исполняемых файлов, например, вы можете передать имя файла в качестве аргумента, но объект ActiveX не имеет такой универсальной возможности.

Для вашего случая я бы создал свою собственную «БД» для наиболее широко используемых объектов/приложений.

person Eugene    schedule 19.02.2010

Вы можете проверить ProgID, с которым связано расширение файла, в реестре Windows.

Найдите расширение в базовом ключе реестра HKEY_CLASSES_ROOT. Там будут ключи с именами ".pdf", ".xls" и т. д. Значением по умолчанию для ключа является ProgID.

person Bernard Darnton    schedule 21.04.2010