1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
DWORD StartAndWait( LPCTSTR Application, LPTSTR Parameters )
{
PROCESS_INFORMATION process_info;
STARTUPINFO startup_info;
ZeroMemory( &startup_info, sizeof( startup_info ) );
startup_info.cb = sizeof( startup_info );
if ( CreateProcess(
Application,
Parameters,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&startup_info,
&process_info ) != FALSE )
{
DWORD exit_code;
// Process créé avec succès, attendre qu'il se termine
WaitForSingleObject( process_info.hProcess, INFINITE );
// récupérer la valeur renvoyée par le processus
GetExitCodeProcess( process_info.hProcess, &exit_code );
// libérer les ressources
CloseHandle( process_info.hProcess );
CloseHandle( process_info.hThread );
// renvoyer le code de retour
return exit_code;
}
return -1; // erreur
} |
Partager