要處理文件關聯啟動,可以使用ShellExecuteEx函數和SHELLEXECUTEINFO結構體。首先,需要填充SHELLEXECUTEINFO結構體的成員變量,其中包括lpFile(要啟動的文件名)、lpParameters(傳遞給應用程序的命令行參數)、lpDirectory(要啟動的工作目錄)、nShow(窗口顯示方式)等。
接下來,調用ShellExecuteEx函數,將填充好的SHELLEXECUTEINFO結構體作為參數傳遞進去,函數會根據結構體中的信息來啟動相應的應用程序,并處理文件關聯啟動的相關操作。
以下是一個示例代碼:
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpFile = _T("C:\\Program Files\\MyApp\\MyApp.exe");
sei.lpParameters = _T("myfile.txt");
sei.lpDirectory = NULL;
sei.nShow = SW_SHOWNORMAL;
if (ShellExecuteEx(&sei))
{
// 等待應用程序退出
WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);
}
在這個示例中,我們將會啟動"MyApp.exe"應用程序,并傳遞"myfile.txt"文件名作為參數。我們還使用了WaitForSingleObject函數來等待應用程序的退出,并使用CloseHandle函數關閉應用程序的句柄。