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