|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Débuté par qualite69, 21 sep. 2015 11:04 - 6 réponses |
| |
| | | |
|
| |
Membre enregistré 23 messages |
|
| Posté le 21 septembre 2015 - 11:04 |
Bonjour à tous,
Je constate sur un application windev 20 66p que le code de fermeture du programme n'est pas exécuté dans le cas de la fermeture de l'application par : * arrêt de la machine * ou forcer la fermeture par le gestionnaire des tâches
Or j'ai impérativement besoin de pouvoir modifier un enregistrement avant la fermeture de l'application. J'ai mis un trace et je constate que le code de fermeture de la fenêtre ouverte ne s’exécute pas non plus (elle n'est pas visible).
Je n'ai pas trop cherché mais y a t-il un moyen d'intercepter cette demande de fermeture de l'application?
D'avance merci à tous ceux qui se penchent sur ce problème. Py |
| |
| |
| | | |
|
| | |
| |
| Posté le 21 septembre 2015 - 11:33 |
Bonjour,
Or j'ai impérativement besoin de pouvoir modifier un enregistrement avant la fermeture de l'application.
Ca, ca a tendance à m'inquiéter... Et si quelqu'un se prend les pieds dans le cable d'alim ? Ou si tu as tout simplement une coupure de courant ?
Si la logique de ton programme OBLIGE à une fermeture propre, je dirais qu'il faudrait plutôt revoir la logique
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Disponible : WXShowroom.com, WXReplication (open source) Bientôt : WXEDM (open source) Plus d'information sur http://fabriceharari.com |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 23 messages |
|
| Posté le 21 septembre 2015 - 13:51 |
Bonjour,
Merci pour votre réponse. Et je comprend parfaitement votre point de vue. Mais le sujet ici n'est pas la logique applicative de mon logiciel mais belle et bien le comportement d'une application Windev sur une demande de fermeture de l'OS ("signal kill").
Ne pouvons nous pas considérer normal qu'un évènement "fin de programme" soit appelé et traité par Windev? Tant pis, nous sommes tous habitués à ce genre de situation et nous sommes bien là pour discuter de contournements...
Alors voila: mon appli est un "time-trackeur". Il permet à l'opérateur d'indiquer quelle tâche il en train de réaliser. L'heure de fin de la tâche en cours est enregistré en base de données quand l'opérateur change de tâche, ferme l'application ou ferme son PC... C'est le dernier cas qui nous intéresse. Avez-vous des propositions (hormis demander à l'opérateur de systématiquement fermer l'application avant un reboot ou un shutown) ?
Merci d'avance à tous pour idées, bout de codes et autres.
Cordialement, Py |
| |
| |
| | | |
|
| | |
| |
| Posté le 21 septembre 2015 - 14:07 |
Bonjour, Si le process de l'application est "tué" par windows (via un fin de tâche), l'application ne peut rien intercepter. Et le problème n'est pas dans Windev, car si je ferme de la même façon Excel, par exemple, aucune demande de confirmation n'est demandée (et adieu le fichier en cours de saisie !).
Une solution (pas propre) ? Dans la table des tâches, tu mets 2 colonnes: un booléen qui indique si la tâche est bien fini, et une heure de fin. Via un timer tu affectes toutes les 10 minutes l'heure actuelle à l'heure de fin, sans toucher au booléen. A la fermeture de l'application tu fais de même, mais en modifiant le booléen. Et à l'ouverture de la fenêtre, tu changes le booléen sans toucher l'heure de fin.
A pire en cas de fermeture "violente", l'utilisateur "perd" les 10 dernières minutes.
Frédéric.
"qualite69" a écrit dans le message de groupe de discussion : 2015605da15271cbc12549ef6ee4443821f0@news.pcsoft.fr...
Bonjour,
Merci pour votre réponse. Et je comprend parfaitement votre point de vue. Mais le sujet ici n'est pas la logique applicative de mon logiciel mais belle et bien le comportement d'une application Windev sur une demande de fermeture de l'OS ("signal kill").
Ne pouvons nous pas considérer normal qu'un évènement "fin de programme" soit appelé et traité par Windev? Tant pis, nous sommes tous habitués à ce genre de situation et nous sommes bien là pour discuter de contournements...
Alors voila: mon appli est un "time-trackeur". Il permet à l'opérateur d'indiquer quelle tâche il en train de réaliser. L'heure de fin de la tâche en cours est enregistré en base de données quand l'opérateur change de tâche, ferme l'application ou ferme son PC... C'est le dernier cas qui nous intéresse. Avez-vous des propositions (hormis demander à l'opérateur de systématiquement fermer l'application avant un reboot ou un shutown) ?
Merci d'avance à tous pour idées, bout de codes et autres.
Cordialement, Py |
| |
| |
| | | |
|
| | |
| |
| Posté le 21 septembre 2015 - 14:25 |
Tant que tu code pour le cas ou le courant est coupé...
En plus de la solution proposée par Frédéric, que tu peux amener à la minute facilement, il y avait dans le vieux temps (je parles de windev 5.5) un évènement qu'on pouvait intercepter avec "evenement" quand le système demandait la fermeture, et auquel on pouvait même répondre NON.
Je le sais parce que je l'ai utilisé dans un soft de sauvegarde que j'avais développé à l'époque (axlSauve, pour les anciens) pour empêcher la fermeture quand une sauvegarde était en cours (sur option bien sur).
Maintenant, quel évènement, je ne sais plus, mais c'est relativement facile à trouver en écrivant dans un fichier texte tous les évènements qui arrivent à un programme de test.
Et est ce que ca fonctionne toujours de la même facon sur les windows "moderne", la encore, ce n'est pas sur
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Disponible : WXShowroom.com, WXReplication (open source) Bientôt : WXEDM (open source) Plus d'information sur http://fabriceharari.com
On 9/21/2015 5:51 AM, qualite69 wrote:
Bonjour,
Merci pour votre réponse. Et je comprend parfaitement votre point de vue. Mais le sujet ici n'est pas la logique applicative de mon logiciel mais belle et bien le comportement d'une application Windev sur une demande de fermeture de l'OS ("signal kill").
Ne pouvons nous pas considérer normal qu'un évènement "fin de programme" soit appelé et traité par Windev? Tant pis, nous sommes tous habitués à ce genre de situation et nous sommes bien là pour discuter de contournements...
Alors voila: mon appli est un "time-trackeur". Il permet à l'opérateur d'indiquer quelle tâche il en train de réaliser. L'heure de fin de la tâche en cours est enregistré en base de données quand l'opérateur change de tâche, ferme l'application ou ferme son PC... C'est le dernier cas qui nous intéresse. Avez-vous des propositions (hormis demander à l'opérateur de systématiquement fermer l'application avant un reboot ou un shutown) ?
Merci d'avance à tous pour idées, bout de codes et autres.
Cordialement, Py |
| |
| |
| | | |
|
| | |
| |
| Posté le 21 septembre 2015 - 15:16 |
PROCEDURE FinSession() SELON _EVE.wMessage CAS 17
SI pas ouinon(oui,"Voulez-vous quitter "+NomProgramme+" avant de quitter Windows ?") alors _eve.retour=faux // On garde l'application active sinon _EVE.Retour=Vrai FinProgramme() FIN FIN
Extrait d'une appli 5.5 encore utilisée chez de nombreux Clients Marche sur XP, et tous les Windows Serveur. Pour les autres OS, je ne sais pas.
Quelle mémoire ce Fabrice. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 23 messages |
|
| Posté le 21 octobre 2015 - 08:40 |
Bonjour à tous,
Merci ce bout de code répond parfaitement à mon besoin (essentiellement la fermeture de session). |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|