调用外部程序,并且控制窗口是否显示
bool StartProgram(QString filePath, bool bVisiable, bool bWaitting)
{
#ifdef _MSC_VER
STARTUPINFOW si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof( si );
si.dwFlags = STARTF_USESHOWWINDOW;
if (bVisiable)
{
si.wShowWindow = SW_SHOW;
}
else
{
si.wShowWindow = SW_HIDE;
}
ZeroMemory( &pi, sizeof(pi) );
if( !CreateProcessW( NULL, (LPWSTR)filePath.utf16(), NULL, NULL, FALSE, 0,
NULL, NULL, &si, &pi ) )
{
return false;
}
if (bWaitting)
{
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hThread );
}
#endif
return true;
}