Bonjour,
Je ne vois comment programmer la fin d'un programme quand personne ne l'utilise (par exemple au bout de 5 minutes, terminer l'application) ?
TTimer, je ne pense pas qu'il fasse cela
Avez-vous une idée ?
Merci
Bonjour,
Je ne vois comment programmer la fin d'un programme quand personne ne l'utilise (par exemple au bout de 5 minutes, terminer l'application) ?
TTimer, je ne pense pas qu'il fasse cela
Avez-vous une idée ?
Merci
Avec un TTimer tu peut le faire, tu le règle sur 5 minutes, dans l'événement OnTimer tu appelle la fonction Close de ta forme principale, et sur toute les action possible par l'utilisateur (clic, double clic, ...) tu met la propriété Enabled de ton timer à false, puis Enabled de ton timer à true pour réactivé les 5 minutes de ton timer
Une idée de solution pour ce que tu veux faire :
Tu place un TTimer (Timer1) sur ta fiche, avec comme interval le temps d'inactivité que tu souhaite en milliseconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void __fastcall TForm1::Detection(TMsg &Msg, bool &Handled) { //verifie que l'on bouge la souris ou qu'on tape au clavier sur l'application if ((Msg.message == WM_MOUSEMOVE) || (Msg.message == WM_KEYDOWN)) { bool tmp = Timer1->Enabled; Timer1->Enabled = false; Timer1->Enabled = tmp; } Handled = false ; }
Puis dans le OnCreate de ta Form et le OnTimer de ton Timer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void __fastcall TForm1::FormCreate(TObject *Sender) { Application->OnMessage = Detection; } void __fastcall TForm1::Timer1Timer(TObject *Sender) { Close() ; }
Merci pour votre réponse rapide,
J'ai opté pour la solution de sat83, et CA FONCTIONNE.
Je ne peux pas essayer la proposition de pottiez, car dans le formulaire il y a un nombre impréssionnant de champs : listBox de combobox, ... tous ont un clic, double clic, OnEnter, etc..
Un grand MERCI
![]()
Partager