如果您只想使用默认应用打开现有图像,请使用ShellExectue API。例如:
ShellExecuteW(NULL, L"open", L"Z:\\cat.PNG", NULL, NULL, SW_SHOW);
您还可以使用相同的 API 使用 mspaint 打开图像:
ShellExecuteW(NULL, L"open", L"C:\\Windows\\system32\\mspaint.exe", L"Z:\\cat.PNG", NULL, SW_SHOW);
ShellExecuteEx 会让你等待完成过程。
您可以使用CreateProcess执行相同的操作。正如@DavidHeffernan 指出的那样,CreateProcess的第二个参数应该指向可写内存,否则会引发访问冲突。为了清楚起见,我将省略第一个参数。例子:
STARTUPINFOW process_startup_info{ 0 };
process_startup_info.cb = sizeof(process_startup_info); // setup size of strcture in bytes
PROCESS_INFORMATION process_info{ 0 };
wchar_t commandline_args[] = L"\"C:\\Windows\\system32\\mspaint.exe\" Z:\\cat.PNG";
if (CreateProcessW(NULL, commandline_args, NULL, NULL, TRUE, 0, NULL, NULL, &process_startup_info, &process_info))
{
//WaitForSingleObject(process_info.hProcess, INFINITE); // uncomment to wait till process finish
CloseHandle(process_info.hProcess);
CloseHandle(process_info.hThread);
}
我强烈推荐阅读这篇 CodeProject 文章(A newbie's basic guide to spawn processes)。