Comment detecter dans un programme que Windows s'arrete ?
Merci pour votre aide
Philippe
Comment detecter dans un programme que Windows s'arrete ?
Merci pour votre aide
Philippe
Voir du côté du message WM_QUERYENDSESSION.
Quelque chose du genre devrait fonctionner (pas testé...) :The WM_QUERYENDSESSION message is sent when the user chooses to end the Windows session or when an application calls the ExitWindows function. If any application returns zero, the Windows session is not ended. Windows stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.
After processing this message, Windows sends the WM_ENDSESSION message with the wParam parameter set to the results of the WM_QUERYENDSESSION message.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
37 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Déclarations privées } procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION; public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession); begin inherited; // Pour autoriser l'arrêt de Windows : Message.Result := 1; // Pour annuler l'arrêt de Windows : Message.Result := 0; end; end.
Je me joint á vous car je trouve le sujet trés intéréssant, mais en général, est ce que qu'il y a "quelquechose" qui peut me dire quand windows s'arrête ?.
L'exemple est trés intérressant, mais fonctioone apparament seulement avec un query...non ?
A++![]()
Finalement, j'ai testé mon exemple et il fonctionne...
Sinon, il faudrait voir du côté du message WM_ENDSESSION.
Par exemple :
Mais j'ai pas le temps de tester (pas envie de rebooter x fois mon PC...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part procedure WMEndSession(var Message: TWMEndSession); message WM_ENDSESSION;
J'ai trouvé dans l'aide cette procédure qui marche.
Merci pour le code toutefois
Philippe
Partager