Evenement programme arreté par windows

Résolu
emtec2hd Messages postés 49 Date d'inscription dimanche 11 septembre 2005 Statut Membre Dernière intervention 13 février 2008 - 6 févr. 2008 à 18:00
emtec2hd Messages postés 49 Date d'inscription dimanche 11 septembre 2005 Statut Membre Dernière intervention 13 février 2008 - 13 févr. 2008 à 13:02
Rebonjour,

voila, j'ai un programme qui est arreté par windows a chaque fin de session, je veux dire que ce n'est pas moi qui l'arrete manuellement, et j'ai besoin que le programme effectue une action au moment meme ou windows arrete le programme.
Seulement, je ne vois pas quel evenement je dois intercepter pour cela, si toutefois cela est possible.

J'ai essayé Form.close mais cela ne fonctionne pas.
Avez-vous d'autres idées?

Merci d'avance

60 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 févr. 2008 à 18:16
Mets un ShowMessage dans le OnClose.

cantador
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
6 févr. 2008 à 18:19
Salut,

Et  OnCloseQuery ?
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 févr. 2008 à 18:38
Le OnCloseQuery permet de définir les conditions dans lesquelles le OnClose
s'exécute.

cantador
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
6 févr. 2008 à 19:21
En fait, si tu mets fin au processus avec le gestionnaire des tâches par exemple, rien ne sera exécuté, effectivement.

Pour fermer proprement, il faut mettre fin à la tâche ( Onglet Application du gestionnaire et non pas onglet Processus ).

D'ailleurs tu as bien un message d'avertissement en mettant fin au processus, ce qui n'est pas le cas quand tu mets fin à la tâche.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
6 févr. 2008 à 23:01
... Et tu as le droit (le devoir!) de cocher "Réponse acceptée" sur ta solution.

     Ce fut un plaisir de t'aider!      
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 févr. 2008 à 00:41
C'est WM_QUERYENDSESSION qu'il convient de traiter, l'autre est la notif de dernière urgence sur laquelle le système n'attendra pas la fin de tes travaux.

ciao...
BruNews, MVP VC++
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
7 févr. 2008 à 04:33
Par contre evite les traitements lourd quand le systeme ferme ton appli en fin de session car
windows XP tue ton processus au bouts de 20 secondes (par defaut)
beaucoup de gens, moi par exemple fixe la limite a 5 secondes maxi.

donc ton traitement de fin doit etre trés trés rapide. genre de pas calculer une fractale 3D avec raytracing en temps réel.

<hr size="2" width="100%" />
http://deefaze.gnomz.com
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 févr. 2008 à 10:35
salut,

as-tu fermé ton fichier après avoir écrit dedans?

si oui, peux-tu copier le code que tu utilise pour écrire dans le fichier?  (inclue ouverture du fichier et type du fichier)

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 févr. 2008 à 13:57
"oui bien bien sur je ferme le fichier" :-D. (C'est pas évident pour tout le monde.)

ça m'as l'air correct....

et sans le showMessage box? ça marche?

PS: use Try Finally

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
7 févr. 2008 à 14:36
Essaie ça. Ca devrait marcher.



procedure TForm1.WMQUERYENDSESSION(var Msg : TWMQueryEndSession);
var    f:TextFile;
begin
if not(FileExists('Dates.txt')) then exit;
AssignFile(f,'Dates.txt'); //Fichier ds le répertoire de l'appli.
Append(f);
Writeln(f,'J''ajoute un truc à la fin du fichier.');
Flush(f);  {Pour que le texte soit réellement écrit dans le fichier }
CloseFile(f);
inherited;
end;
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 févr. 2008 à 16:25
Salut cari..

Si avec le flush ça ne marche pas, alors y'aura vraiment un truc...
A noter que dans PostitForEver, je ne l'utilise pas.. je lance une procédure
qui écrit dans un fichier .ini.

cantador
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
7 févr. 2008 à 22:26
Moi zossi 
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2008 à 12:45
Pour la suite, faut prendre un avatar..

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2008 à 14:55
non, prendre une jolie image pour te représenter au lieu
du point d'interrogation à la noix..

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2008 à 20:42
J'ai pas tout regardé mais juste un truc à chaud :
Timer1.Destroy;

me semble suspect..

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2008 à 20:45
Autre chose, il manque du code car on a pas la procédure qui lance le timer.

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2008 à 22:12
Je crois que tu as trouvé ton souci.

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2008 à 23:05
Le timer est enable := true par défaut.
il faut mieux écrire donc:
timer.enable := false
timer.enable := true
pour l'activer
et
timer.enable := false pour l'arrêter

cantador
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
8 févr. 2008 à 23:07
C'est que sa propriété "enabled" est à true dans l'inspecteur d'objet (valeur par défaut).

Au passage, pour désactiver un composant Timer, il faut mettre sa propriété Enabled à  false et non pas le détruire. On n'est pas chez les sauvages chez Delphi.   

Je suppose que l'heure écrite dans ton fichier est l'heure de FIN... Pourquoi ne pas simplement inscrire l'heure de début dans l'événement onActivate de ta form? Je ne comprends pas l'utilité de ce Timer.
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
8 févr. 2008 à 23:08
héhéhé...
Ca se bouscule au portillon !  ;)
3
Rejoignez-nous