Comment faire pour fermer une application apres un certain temps avec Application.OnIdle et comment fonctionne cet evenement j'ai pas tous compris dans l'aide Delphi.
Merci
Comment faire pour fermer une application apres un certain temps avec Application.OnIdle et comment fonctionne cet evenement j'ai pas tous compris dans l'aide Delphi.
Merci
Je ne l'ai jamais utilisé, mais je crois que cet évènement peut se déclancher quand aucun autre traitement n'est en cours.
![]()
![]()
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
OnIdle s'éxécute dès que l'application passe de l'état actif à inactif (ne traite pas de code) et ce une seule fois si Done a la valeur True (valeur par défaut). Elle sera appelé de maniere continue si Done est passé à False (dans cette même procédure)...
Enfin, tout ça pour dire finalement que :
Moi, je jouerai plutot sur les messages windows qui montrent que l'utilisateur est actif (WM_MOUSEMOVE ...) :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 type TForm1 = class(TForm) FTimer: TTimer; procedure FormCreate(Sender: TObject); private { Déclarations privées } procedure InitTimer; procedure TimerTimer(Sender: TObject); procedure Activite(var Msg : Tmsg; var Handled: Boolean); public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.InitTimer; var b : boolean; begin b := FTimer.Enabled; FTimer.Enabled := False; FTimer.Enabled := b; end; procedure TForm1.FormCreate(Sender: TObject); var Duration : integer; begin Duration := 1; FTimer := TTimer.Create(self); FTimer.OnTimer := TimerTimer; FTimer.Enabled := True; FTimer.Interval := Duration*60000; // minutes -> millisecondes Application.OnMessage := Activite; end; procedure TForm1.TimerTimer(Sender: TObject); begin Close; end; procedure TForm1.Activite(var Msg : Tmsg; var Handled: Boolean); begin if ((Msg.message = WM_MOUSEMOVE) or (Msg.message = WM_KEYDOWN)) then InitTimer; Handled := false; end;
Partager