Accueil > Forum > > > > Mon appli bloque la fermeture de Windows
Mon appli bloque la fermeture de Windows
dimanche 3 mai 2009 à 22:29:02 |
Mon appli bloque la fermeture de Windows

vieuxpere
|
Bonjour, Mon application, qui se lance au démarrage de Windows, reste en arriere plan en permanence. Jusqu'à maintenant mon application bloquée la fermeture de Windows quans l'utilisateur demandé l'arret. Depuis le code ci-dessous, mon appli se ferme mais l'arret de windows s'interrompt, il faut donc le refaire arreter Windows pour que ca s'arrete enfin. Je doit donc fermer en deux fois ! Si quelqu'un sait m'améliorer le code ci-dessous je lui en serait bien reconnaissant. Cordialement, // Detecte la fermeture de Windows (demandée par l'utilisateur) procedure TForm4.WMQueryEndSession(var Message: TWMQueryEndSession); begin Message.Result := 1; end; // Execute des operations pendant la fermeture de Windows procedure TForm4.WM_ENDSESSION(var Message: TWMQueryEndSession); Begin Application.Terminate; // On ferme l'application End;
|
|
dimanche 3 mai 2009 à 23:02:24 |
Re : Mon appli bloque la fermeture de Windows

ni69
|
Bonsoir, Tu as oublié l'instruction inherited
Voilà le code corrigé (remarque: il est inutile d'utiliser les deux messages Windows WMQueryEndSession et WMEndSession, un seul suffit pour réaliser ce que tu recherches) : procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure TForm4.WMQueryEndSession; begin inherited; Application.Terminate; Msg.Result := 1; end;
@+ Nico { www.ni69.info }
|
|
lundi 4 mai 2009 à 14:38:09 |
Re : Mon appli bloque la fermeture de Windows

vieuxpere
|
Merci de ta réponse, je vais tester mais j'ai quand même une question comment "Msg.Result := 1;"va s'executer si avant je fais un application.terminate ?
|
|
lundi 4 mai 2009 à 14:40:00 |
Re : Mon appli bloque la fermeture de Windows

vieuxpere
|
A j'oubliez aussi, est-ce que ce code doit-être mis sur toutes les fenetres potentiellement ouvertes au moment de la fermeture de Windows ou juste sur la fenetre principale ?
|
|
lundi 4 mai 2009 à 14:48:20 |
Re : Mon appli bloque la fermeture de Windows

vieuxpere
|
NON helas, aprés avoir testé : procedure TForm4.WMQueryEndSession; begin inherited; Application.Terminate; Msg.Result := 1; end;
Ca ne fonctionne pas, ça me ferme certes mon application mais windows ne se ferme pas, je dois le faire donc en deux fois.
|
|
lundi 4 mai 2009 à 17:59:37 |
Re : Mon appli bloque la fermeture de Windows

Bacterius
|
Non !
Windows terminera ton application lui-même comme un grand. Enleve le Application.Terminate et ça devrait rouler.
Cordialement, Bacterius !
|
|
lundi 4 mai 2009 à 20:41:32 |
Re : Mon appli bloque la fermeture de Windows

ni69
|
@vieuxpere:
Désolé, une petite inversion de lignes... J'ai pas trop réfléchi à vrai dire il était tard ! Il faut bien sûr lire : inherited; Msg.Result := 1; Application.Terminate;
Mais en pratique, il est vrai que Msg.Result := 1;est facultatif, vu qu'il est géré par l'appel à inherited;Cette procédure mise sur la form principale est amplement suffisante. Cela marche très bien pour moi je viens de tester, donc regarde peut-être au niveau des autres applications qui tournent en même temps (cf taskmgr). Peut-être que le problème ne vient pas de la tienne! @Bacterius:Tout dépend de si l'application est dans une phase bloquante ou non (procédure longue en cours, boucle qui n'est pas encore finie...) Dans ce genre de cas, l'utilisation d'un flag associé à la boucle en cours peut être utile (on modifie le flag dans la procédure liée au WMQES, et cela est répercuté dans la boucle...) @+ Nico { www.ni69.info }
|
|
lundi 4 mai 2009 à 20:59:43 |
Re : Mon appli bloque la fermeture de Windows

Bacterius
|
En général il faut tout faire pour respecter les choix de l'utilisateur.
Si l'utilisateur veut fermer, tu ne dois pas être en boucle de travail.
M'enfin des fois evidemment il faut attendre quelques minutes par exemple pendant une sauvegarde de base de données de dernière minute, mais dans ce cas-là la moindre des choses est d'afficher une messagebox avec marqué "patientez svp" en gros. Ou bien sur Vista, appeller ShutdownReasonBlockCreate.
Mais effectivement ça peut être utile d'utiliser un flag pour savoir de quoi on parle ...
Cordialement, Bacterius !
|
|
lundi 4 mai 2009 à 21:14:06 |
Re : Mon appli bloque la fermeture de Windows

ni69
|
"Si l'utilisateur veut fermer, tu ne dois pas être en boucle de travail." Je ne suis pas d'accord avec cela. Par exemple, si tu es en train de parcourir tous les fichiers du disque pour une recherche particulière qui dure longtemps, et qu'en plein milieu, l'utilisateur décide inopinément de quitter windows, il faut stopper la boucle. Là est l'utilité d'un flag. Mais c'est loin d'être le seul cas... @+ Nico { www.ni69.info }
|
|
lundi 4 mai 2009 à 21:34:10 |
Re : Mon appli bloque la fermeture de Windows

Bacterius
|
Je n'ai pas dit le contraire, je dis qu'il faut éviter les longs traitements qui empêchent Windows de fermer. Mais je me suis mal exprimé je le reconnais. En fait on va mettre à True une variable booléenne globale quand on veut stopper la boucle, et la boucle, à chaque itération teste la variable et se casse si c'est à True (en gros, après on peut utiliser une variable de type Integer pour spécifier plusieurs types de réactions, etc ...) ?
Cordialement, Bacterius !
|
|
Cette discussion est classée dans : message, appli, application, windows, fermeture
Répondre à ce message
Sujets en rapport avec ce message
application en attente invisible perturbe windows. [ par crogger ]
Salut, j'ai mon appli qui se lance au demarage de windows qui permet de detecter la presence de connexion internet avec une boucle WHILEex:while monip
message : " l'application ne répond pas " sous XP [ par phoenyx ]
Salut à tous !dans une appli, je fais une recherche dans une base de données qui affiche les résultats au fur et à mesure qu'ils sont trouvés (utilisa
Capture message windows [ par Amadeus ]
J'aimerai entamer une application qui capte tous les messages windows.Par exemple dés qu'on supprime un répertoire sur le poste, qu'on puisse alimente
OnClose n'est pas appelé lors de la fermeture de Windows [ par globule ]
Bonjour, J'ai crée un application qui tourne en tache de fond et qui se place en systray à coté de l'horloge.J'ai implementé l?événement FormClose du
imiter un message windows [ par cricri_b34 ]
salut,j'aimerais imiter à 100% un message window.Plus précisément celui qui apparait (sous windows XP) lorsqu'on prend un fichier texte et qu'on chang
Forcer la fermeture d application pendant la fin de session windows [ par kevino ]
Bonjour;J ai fais une application qui identifie l utilisateur a travers une sorte de cookies. mais je n arrive pas a forcer la suppression de cette co
Mona pplication empèche la fermeture de Windows [ par f6dqm1 ]
BonjourJ'ai écrit une application Delphi qui empèche la fermeture de Windows si cette application tourne.Si je fais Arrèter, l'écran passe en sombre p
Mon appli empèche la fermeture de Windows [ par H60 ]
Bonjour à tousJ'ai une appli qui tourne en tâche de fonds. Mais Windows n'arrive pas à la fermer.Pourriez vous me dire quel message windows envoie pou
Messages windows [ par simonpelloquin ]
Bonjour,Je vais peut être me faire gronder parce que la réponse est peut être sur le site, mais j'ai pas trouvé... Je cherche à intercepter un message
Message d'erreur lors de la fermeture d'une application fait en delphi [ par diglas ]
slt, j aimerai avoir une solution a un pb. voila, j'ai developper une application en Delphi7, une application de base de données. mais a chaque fois q
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|