Salut,
Je dispose d'une classe CCommand avec entre autre les fonctions suivantes :
execute() -> executer un processus
stop() -> stopper ce processus
Mon problème:
je voudrais que quand le processus tourne, qu'il ne sa passe plus rien avant que le processus soit terminer d'où un WaitForSingleObject( pi.hProcess, INFINITE ); dans la fonction execute().
Seulement je voudrais aussi commander l'arret du processus à tout moment avec la fonction stop().
Le processus est créé avec CreateProcess, la fonction stop() est celle donnée par la FAQ :
Actuellement si je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void CPerforceCommand::stop() { PostThreadMessage(pi.dwThreadId, WM_CLOSE, 0, 0); WaitForSingleObject(pi.hProcess, 2000); DWORD dwExitCode = 0; GetExitCodeProcess(pi.hProcess, &dwExitCode); if(dwExitCode == STILL_ACTIVE) //process toujours présent ? { // en dernier recours forcé à la fermeture du process avec un code derreur à zéro pour lexemple TerminateProcess(pi.hProcess, 0); } }
MaCommand.execute();
MaCommand.stop();
stop() n'a lieu que quand MaCommand.execute(); est fini. ( Ce qui est d'une utilité remarquable... )
: Comment faire pour interompre l'exécution de MaCommand.execute() ?
Merci
Partager