emtec2hd
Messages postés49Date d'inscriptiondimanche 11 septembre 2005StatutMembreDernière intervention13 février 2008
-
6 févr. 2008 à 18:00
emtec2hd
Messages postés49Date d'inscriptiondimanche 11 septembre 2005StatutMembreDernière intervention13 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?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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.
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 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;
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 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
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 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.