Открытие файла, как если бы это был текстовый файл (даже если его расширение не .txt) - PullRequest
4 голосов
/ 03 февраля 2012

Я пытаюсь открыть редактор, связанный с файлами 'txt' - вот в чем суть, хотя мой файл на самом деле не имеет расширения txt, поэтому я не могу просто ShellExecute это, я должен найти соответствующую программу вручную.

Для этого я пытался использовать COM-метод IApplicationAssociationRegistration::QueryCurrentDefault, но он возвращает ProgId, что для меня менее чем бесполезно.Как я могу сопоставить это с EXE?Я использую C #, но это не кажется актуальным.

Редактировать: Подход, связанный ниже, где вы напрямую обращаетесь к Реестру, больше не работает во всех случаях.Правильный путь выше, но мне нужен следующий шаг - как мне взять возвращенный ProgId и получить связанную программу?

Ответы [ 2 ]

7 голосов
/ 07 февраля 2012

Чтобы выполнить один файл, как если бы это был файл другого типа, вызовите ShellExecute и установите для члена lpClass структуры SHELLEXECUTEINFO значение progid, которое вы хотите, чтобы файл был .

Важно сделать это таким образом, потому что обработчик по умолчанию для текстовых файлов не обязательно является программой с командной строкой. Это может быть сервер DDE или целевой объект или обработчик контекстного меню или обработчик делегированного выполнения .

0 голосов
/ 07 февраля 2012

К сожалению, да, вам придется использовать реестр.Вот как регистрация работает и как она записывается в Windows.Ссылка объясняет все различные записи, которые вы можете ожидать, как перевести запись в путь exe, а также ссылки на ваш интерфейс внизу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...