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 :

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 d’erreur à zéro pour l’exemple
  TerminateProcess(pi.hProcess, 0);                                                  
 }                                                 
}
Actuellement si je fait :

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