返回进程ID,代码如下:
DWORD ExecuteApp(CString strCmdLine, char* lpszWorkDirectory = NULL, BOOL bAsy = TRUE/*是否异步*/)
{
PROCESS_INFORMATION stProcInfo;
ZeroMemory(&stProcInfo, sizeof(PROCESS_INFORMATION));
STARTUPINFO startup;
ZeroMemory(&startup, sizeof(startup));
startup.cb = sizeof(startup);
startup.dwFlags = STARTF_USESHOWWINDOW;
startup.wShowWindow = SW_SHOW;
if (::CreateProcess(NULL,
(LPTSTR)(LPCTSTR)strCmdLine,
NULL,
NULL,
FALSE,
0,
NULL,
(LPTSTR)(LPCTSTR)lpszWorkDirectory,
&startup,
&stProcInfo)
)
{
if (stProcInfo.hProcess)
{
::CloseHandle(stProcInfo.hThread);
}
if (!bAsy) //同步
{
WaitForSingleObject(stProcInfo.hProcess, INFINITE);
::CloseHandle(stProcInfo.hProcess);
return 0;
}
}
return stProcInfo.dwProcessId;
}