Как попросить Windows открыть внешний файл на основе ассоциации файлов? - PullRequest
4 голосов
/ 15 декабря 2008

Используя API, специфичные для Win32, существует ли простой способ запустить внешнее приложение, чтобы открыть файл, просто указав путь / имя файла?

Например, скажем, у меня есть файл с именем C: \ tmp \ image.jpg. Есть ли один API, который я могу вызвать, чтобы сообщить Windows, чтобы открыть приложение, связанное с файлами .jpg? Без необходимости выполнять поиск в реестре?

Я думал, что вспомнил, как делал это много лет назад, но не могу найти это.

Ответы [ 2 ]

12 голосов
/ 15 декабря 2008

ShellExecute

Выполняет операцию с указанным файлом.

Синтаксис

C ++

HINSTANCE ShellExecute(
  _In_opt_ HWND    hwnd,
  _In_opt_ LPCTSTR lpOperation,
  _In_     LPCTSTR lpFile,
  _In_opt_ LPCTSTR lpParameters,
  _In_opt_ LPCTSTR lpDirectory,
  _In_     INT     nShowCmd
);

Параметры

...

nShowCmd [in]

Тип: INT

Флаги, которые определяют, как приложение должно отображаться при его открытии. Если lpFile указывает файл документа, флаг просто передается в соответствующее приложение. Это зависит от приложения, чтобы решить, как справиться с этим. Эти значения определены в Winuser.h ...

6 голосов
/ 15 декабря 2008

ShellExecute - это функция, которую вы ищете. Он может обрабатывать как исполняемые типы, так и зарегистрированные типы файлов, и выполняют все виды действий (глаголов) над файлом, в зависимости от того, что он поддерживает.

Синтаксис:

HINSTANCE ShellExecute(
    HWND hwnd,            // handle to owner window.
    LPCTSTR lpOperation,  // verb to do, e.g., edit, open, print.
    LPCTSTR lpFile,       // file to perform verb on.
    LPCTSTR lpParameters, // parameters if lpFile is executable, else NULL.
    LPCTSTR lpDirectory,  // working directory or NULL for current directory.
    INT nShowCmd          // window mode e.g., SW_HIDE, SW_SHOWNORMAL.
);

Для получения более подробной информации обратитесь к документации MSDN по вашему району.

...