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;
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.