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. ___ É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.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)
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;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager