1. CreateProcess,如果被启动程序带有启动参数的话,必须把程序名连带启动参数放到lpCommandLine参数中,lpApplicationName置为空。
2. STARTUPINFO必须初始化0,并设定大小
CString strCmd;
strCmd.Format("%s %s", strProName, strCmdLine);
// STARTUPINFO si = {sizeof(si)};// si的第一个字段cb初始化为sizeof(si),其余字段设置为0
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0x00, sizeof(si));// si整个设置为0
si.cb = sizeof(STARTUPINFO);// si的第一个字段cb初始化为sizoef(si)
si.wShowWindow = SW_SHOW;
if (CreateProcess(NULL, (LPTSTR)(LPCTSTR)strCmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
注意上述两种si的初始化方式,si必须设置大小且其余字段设置为0