要处理文件关联启动,可以使用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函数关闭应用程序的句柄。