This assumes you are compiling using UNICODE. Otherwise, change all WCHARs to charCode:bool LaunchApplication (WCHAR *wszPath, WCHAR *wszExe, WCHAR *wszCommandLine)
{
SHELLEXECUTEINFO ExeInfo;
ZeroMemory (&ExeInfo, sizeof (ExeInfo));
ExeInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
ExeInfo.cbSize = sizeof (SHELLEXECUTEINFO);
ExeInfo.lpDirectory = wszPath;
ExeInfo.lpParameters = wszCommandLine;
ExeInfo.lpFile = wszExe;
ExeInfo.nShow = SW_SHOWNORMAL;
if (!ShellExecuteEx (&ExeInfo))
{
// problem launching
return false;
}
// wait for the app to start
WaitForInputIdle( ExeInfo.hProcess, 30000);
CloseHandle( ExeInfo.hProcess );
return true;
}
