ProgID и отношение расширения файла
Я работаю над программой, использующей проект JACOB (JAva COm Bridge).
Есть файл для открытия, передается полное имя (например, c:\test\test.xls). Чтобы JACOB мог создать новый ActiveXComponent, ему нужно передать ProgID или CLSID. (Например, Excel.Application или Word.Application, но за пределами области MS также имеется Autocad.Application и т. Д.)
Так как же связать расширение файла или тип MIME с заданным ProgID или CLSID? Есть ли еще одна БД, которую я могу присоединить к спецификации Win32_ProgIDS? Win32_ProgIDSpecification имеет все ProgID.
2 ответа
Вы можете проверить ProgID, с которым связано расширение файла в реестре Windows.
Посмотрите под ключ реестра HKEY_CLASSES_ROOT для расширения. Там будут ключи, называемые ".pdf", ".xls" и т. Д. По умолчанию для ключа используется ProgID.
Некоторые абстрактные объекты, которые вы получаете с помощью CLSID или PROGID, ничего не могут сделать с именем файла. Он может открыть файл только через некоторые методы интерфейса, которые отличаются в большинстве случаев.
Например, для исполняемых файлов вы можете передать имя файла в качестве аргумента, но объект ActiveX не обладает такой универсальной способностью.
Для вашего случая я бы создал собственную "БД" для наиболее часто используемых объектов / приложений.