使用 Win32 特定的 API,是否有一种简单的方法来启动外部应用程序以打开文件,只需传入文件的路径/名称?
例如,假设我有一个名为 C:\tmp\image.jpg 的文件。我可以调用一个 API 来告诉 Windows 打开与 .jpg 文件关联的应用程序吗?无需进行大量注册表查找?
我想我记得很多年前做过这个,但我找不到它。
使用 Win32 特定的 API,是否有一种简单的方法来启动外部应用程序以打开文件,只需传入文件的路径/名称?
例如,假设我有一个名为 C:\tmp\image.jpg 的文件。我可以调用一个 API 来告诉 Windows 打开与 .jpg 文件关联的应用程序吗?无需进行大量注册表查找?
我想我记得很多年前做过这个,但我找不到它。
对指定文件执行操作。
句法
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 [输入]
类型:INT
指定应用程序打开时如何显示的标志。如果lpFile指定了一个文档文件,则该标志被简单地传递给相关的应用程序。由应用程序决定如何处理它。这些值在 Winuser.h 中定义...
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 文档。