TCHAR szCmdline[] = TEXT("D:\\QBoot\\2020P\\potplay\\PotPlayer\\PotPlayerMini64.exe"); // 设置子进程路径
BOOL bSuccess = FALSE;
PROCESS_INFORMATION pi; // 用来接收新进程的识别信息
STARTUPINFO si; // 用于决定新进程的主窗体如何显示
// 设置PROCESS_INFORMATION
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION)); // 用0填充内存区域
// 设置STARTUPINFO
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO); // 结构大小
si.dwFlags |= STARTF_USESTDHANDLES; // 使用hStdInput 、hStdOutput 和hStdError 成员
bSuccess = CreateProcess(
NULL, // lpApplicationName
szCmdline, // command line
// 以上两个字段都可以创建目标子进程
NULL, // process security attributes
NULL, // primary thread security attributes
TRUE, // bInheritHandles:指示新进程是否从调用进程处继承了句柄
0, // creation flags:指定附加的、用来控制优先类和进程的创建的标志。
// 设置为 CREATE_NEW_CONSOLE 可显示子窗口
NULL, // use parent's environment
NULL, // use parent's current directory
&si, // STARTUPINFO :指向一个用于决定新进程的主窗体如何显示的STARTUPINFO结构体
&pi // PROCESS_INFORMATION :指向一个用来接收新进程的识别信息的PROCESS_INFORMATION结构体
);
// If an error occurs, exit the application.
if (!bSuccess)
MessageBox("创建子程序失败");
else
{
// 关闭一些子进程用的句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
/*CloseHandle(write1);
CloseHandle(read2);*/
}
return bSuccess; //true-->创建成功