Как попросить Windows открыть внешний файл на основе ассоциации файлов?

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

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

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

14.12.2008 23:14:53
2 ОТВЕТА
РЕШЕНИЕ

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 ...

12
3.10.2016 06:58:07

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 документацию для более подробной информации

6
15.12.2008 00:44:22