Interception arret windows

Résolu
dc46 Messages postés 20 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 7 juillet 2022 - 3 oct. 2010 à 17:13
dc46 Messages postés 20 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 7 juillet 2022 - 5 oct. 2010 à 17:48
Bonjour,
J'ai écrit un programme résident en try-icon qui fonctionne parfaitement.
Quand l'utilisateur quitte Windows celui-ci refuse de se terminer si le programme en question n'a pas été quitter.
Les autres programmes se fermant automatiquement sur un arrêt je suppose que Windows émet un signal qu'il est possible d'intercepter afin de libérer la mémoire. Si oui, lequel et comment. Je développe en Delphi.
Merci pour votre aide.

 dc46 like Delphi

10 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 oct. 2010 à 18:05
Salut,

Windows envoie le Message WM_QUERYENDSESSION.
A la reception de celui-ci, ton application doit simplement se fermer proprement.
3
dc46 Messages postés 20 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 7 juillet 2022
4 oct. 2010 à 08:20
Bonjour et merci pour l'information, je la teste dès que possible.


 dc46 like Delphi
0
dc46 Messages postés 20 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 7 juillet 2022
4 oct. 2010 à 12:12
Bonjour,
En progrès.
Je ferme bien mon application, mais l'arrêt de Windows ne s'achève pas.
Je dois le relancer bien que je charge msg.result à 1 avant de fermer mon programme.
Qu'ai je oublié?
 dc46 like Delphi
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
4 oct. 2010 à 13:31
Salut cari/dc46,

c' est en effet quelques chose que tout programmeur devrait gérer! Il devrait carrément être dispo dans un événement du compo TApplicationEvents !!!

Dans le même esprit, y a t-il un moyen de dire à Windows d' attendre un certains temps pour que notre appli puisse finir une tâche par exemple?

A+
0

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
4 oct. 2010 à 22:54
Salut Mauricio,

« y a t-il un moyen de dire à Windows d' attendre un certains temps »

Tu sais comme moi que Windows collabore avec le programmeur si celui-ci sait lui parler avec tendresse. Chuchote-lui: AbortSystemShutdown pour voir... et espère :)

@ dc46
A tout hasard... as-tu essayé de le faire hors de l'IDE ?
0
dc46 Messages postés 20 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 7 juillet 2022
5 oct. 2010 à 09:48
Bonjour à tous,
En fait, si je suis dans l'IDE l'arrêt de Windows se fait parce que je reçoit le message 'Session de débogage en cours' et que dans ce cas l'IDE se charge de libérer mon programme et que l'IDE se libère correctement.
Mon problème survient quand je suis hors de l'IDE.
Si on se fit à Microsoft la logique voudrais que sur WM_QueryEndSession le programme réponde qu'il accepte la fermeture, et qu'il se ferme lorsqu'il reçoit WM_EndSession.
J'ai essayé plusieurs solutions et je suis toujours bloqué à ce niveau.
Pour avancer je vais prendre le temps de faire une version épurer du programme que je mettrais en ligne a moins que vous n'ayez un exemple simple et fonctionnel.
Merci en attendant de votre intérêt pour ce message.
Je ne sait pas si mon adresse eMail est en ligne, mais vous pouvez me contacter a dcavarroc@gmail.com .

 dc46 like Delphi
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
5 oct. 2010 à 14:24
Salut dc46,

j' ai le même souci que toi et je vais essayer de voir comment le résoudre ...

A+
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
5 oct. 2010 à 15:58
Je suis tombé la-dessus. Vous y trouverez peut-être du grain à moudre...
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
5 oct. 2010 à 16:10
0
dc46 Messages postés 20 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 7 juillet 2022
5 oct. 2010 à 17:48
Re bonjour,
Suite a mon message de ce matin,
j'ai donc épuré un maximum et je me suis construit un programme 'dcResid' qui s'installe en Trayicon, que l'on peut ouvrir par le popup (Click droit de la souris sur l'icône de la trayicon) et que l'on peu fermer par la même méthode. Pour faire sympa j'ai l'icône qui change selon que le programme est visible ou non.
Eh bien ça marche.
Le programme se ferme bien, et windows termine sa fermeture.
Il ne me reste plus qu'à isoler les éléments ou les objets de mon programme qui crée le problème. Peut-être un thread mal stoppé?
Comme promis je vais mettre 'dcResid' en ligne pour ceux qui veulent une base fonctionnelle, dès que j'aurais compris comment m'y prendre. C'est ma première mise en ligne.
A+ de lire vos commentaires et suggestions.

 dc46 like Delphi
0
Rejoignez-nous