2015-06-08 4 views
7

В моем приложении я хотел бы иметь возможность выполнить файл с произвольным именем и расширением, используя программу, связанную с другим расширением.Как выполнить файл с другим приложением, связанным с расширением?

Например, у меня есть файл с именем file.dat, но я хотел открыть его с помощью Блокнота, как если бы он был назван file.txt или file.dat.txt. Кроме того, у меня нет разрешения на переименование файла, так что это не может быть и речи.

Если файл был под названием file.txt, я мог бы позвонить по номеру ShellExecute. Но это не удается при вызове file.dat; Windows жалуется, что для этого файла нет никакой связи.

Я не хочу жестко задавать конкретный исполняемый файл, потому что (в приведенном выше примере) конечный пользователь мог связать файлы .txt с Wordpad вместо Блокнота. В таком случае я хочу, чтобы мой file.dat был открыт с помощью Wordpad.

ответ

10

Позвоните ShellExecuteEx и укажите lpClass член SHELLEXECUTEINFO struct. Обратите внимание, что вы должны включить SEE_MASK_CLASSNAME в члену fMask.

Например, установите lpClass на номер '.txt', чтобы попросить файл открыть программу, связанную с расширением .txt.

Смежные вопросы