Fermer simultanément tous les processus d'une même application

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 155 fois - Téléchargée 7 fois

Contenu du snippet

var
  hdlEvent   : THandle; //handle de l'évènement qui provoque les fermetures.
  hdlThread : THandle; //handle du Thread qui attendra l'événement 'hdlEvent'.


procedure ToutFermer(HWnd: THandle); stdcall; 
  {Procedure du Thread qui attend l'évènement de fermeture.}
  begin
  WaitForSingleObject(hdlEvent,INFINITE);//attend le déclenchement de l'événement 'OnFerme'..
  PostMessage(HWnd,WM_QUIT,0,0);   //..et indique à l'application ce qu'elle doit faire.
end;


procedure TForm1.FormCreate(Sender: TObject);
  var id : Cardinal;
  begin
  hdlEvent:= CreateEvent(nil,True,False,'OnFerme'); //On crée l'événement...
  if hdlEvent<>0 then hdlThread:=CreateThread(nil,1,@ToutFermer,pointer(Handle),0,id); //...et mise en attente de l'événement ds un Thread.
end;

procedure TForm1.btnToutFermerClick(Sender: TObject);
  {Ferme tous les process en cours.}
  begin
  PulseEvent(hdlEvent);//déclenche l'événement de fermeture et le désarme aussitôt.
end;


procedure TForm1.btnQuitterClick(Sender: TObject);
  {Ne ferme que le process de cette application.}
  begin
  Application.Terminate;
end;


procedure TForm1.FormDestroy(Sender: TObject);
  begin
  if hdlEvent   <> 0 then CloseHandle(hdlEvent);
  if hdlThread <> 0 then CloseHandle(hdlThread);
end;



Compatibilité : Delphi 5

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.