Confirmation du shutdown

Quelles sont les fonctions qui amélioreraient ce programme ?
Répondre
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Confirmation du shutdown

Message par r0lZ »

Cette suggestion ci, je lui dédie un sujet spécifique dans ce forum, car elle me paraît essentielle.

L'option éteindre la lumière m'a fait perdre mon travail en cours. Je sais, je ne suis pas sensé utiliser cette option si je compte utiliser l'ordinateur, mais il n'est pas toujours facile de savoir à l'avance ce que l'on fera de sa soirée. Voir brusquement l'écran passer au noir alors qu'on est en train de travailler, et n'avoir d'autre choix que de paniquer est particulièrement frustrant!

Bref, il faudrait ABSOLUMENT un moyen de confirmer que le shutdown doit bien avoir lieu, et faire le shutdown SEULEMENT en l'absence de réponse de l'utilisateur après 30 secondes ou 1 minute. (Sorry d'être quelque peu vindicatif, mais là, j'ai les boules!)
Si possible, le dialogue de confirmation devrait être accompagné d'un son spécifique, pour prévenir l'utilisateur si il s'est éloigné temporairement de son ordi.

En outre, ce délai pourrait peut-être aussi corriger le bug du fichier de zéro bytes, si ce bug est lié au fait que l'ordi est éteint trop rapidement après la fermeture du fichier. (Je sais: il n'y a pas de raison que Windows bousille ce fichier, mais en l'absence d'une meilleure piste, je ne ferais pas trop confiance à Windows sur ce point!)

A propos, j'ai vilipendé le mode de veille de Windows 7 (x64) ailleurs dans ce forum, car il me bousillait systématiquement l'audio d'une de mes cartes son, et que quelques programmes ont des problèmes, parfois graves, après le réveil de l'ordi. Mais après avoir installé le service pack 1 de Win7 et un nouveau pilote pour la carte son, je suis heureux de constater que le problème du son est résolu. (Il reste toutefois le problème des softs incompatibles avec le sleep, mais c'est nettement moins grave, et on peut accuser ces softs d'être mal programmés.) Je pense donc que la solution d'utiliser le mode veille à la place du shutdown serait déjà satisfaisante, mais si le shutdown reste une option de PTVM, je pense que ma suggestion devrait être prise en compte. Merci d'avance.
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Curtis
Messages : 164
Enregistré le : 27 févr. 2010, 20:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Confirmation du shutdown

Message par Curtis »

pas bête cette suggestion, une petite fenêtre avec un compte à rebours de 30 secondes avec un bouton "cancel" qui permettrait d'annuler l'arrêt de l'ordinateur,

mais si ça se trouve il existe peut-être une manip à faire dans la base de registre de windows pour forcer windows à afficher ce genre de compte à rebours pour annuler l'arrêt automatique demandé par les programmes qui utiliseraient la fonction "shutdown" de l'api windows ? Ou alors il y a un paramètre facultatif dans la fonction de l'api qu'utilise Ginkgo pour appeler l'extinction automatique, un paramètre dans cette fonction qui permettrait à windows de faire afficher automatiquement ce compte à rebours donnant la possibilité à l'utilisateur d'annuler l'arrêt, il faudrait regarder ça dans la doc MSDN, ça faciliterait le travail à Gingko pour mettre en place cette suggestion
Gingko
Administrateur du site et développeur
Messages : 2058
Enregistré le : 05 août 2007, 12:57
Carte Tuner : August DVB-T210 USB + divers autres
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Confirmation du shutdown

Message par Gingko »

Bonjour,

L'extinction de l'ordinateur se fait actuellement en utilisant la fonction « ExitWindowsEx » de l'API de Windows.

Il est éventuellement possible d'utiliser la fonction « InitiateSystemShutdownEx » à la place, fonction qui produit le même effet, mais avec la possibilité d'introduire un délai avant extinction, délai affiché à l'utilisateur dans une boîte de dialogue incluant la raison de l'extinction et décompte du temps restant. Mais malheureusement, il n'y a pas de bouton dans cette boîte de dialogue qui permette d'annuler l'extinction, ni d'option pour en ajouter un (on se demande pourquoi, d'ailleurs, ce serait assez logique).

Il y a cependant la possibilité pour l'utilisateur d'exécuter (en ligne de commande) la commande « shutdown -a » (et même de créer un raccourci sur cette commande pour pouvoir l'exécuter rapidement), ce qui a effectivement pour effet d'annuler l'extinction pendant le délai d'attente.

Les deux fonctions ont par ailleurs une option pour spécifier de demander à l'utilisateur de sauvegarder toute donnée d'application non sauvegardée, mais il semble que ça ne marche pas très bien d'après certains commentaires sur Internet.

Après, il y a toujours la possibilité de reproduire une telle boîte de dialogue de toutes pièces dans Pouchin TV Mod, mais là ça risque de prendre plus de temps avant que je me décide à faire ça.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Confirmation du shutdown

Message par r0lZ »

Curtis a écrit :mais si ça se trouve il existe peut-être une manip à faire dans la base de registre de windows pour forcer windows à afficher ce genre de compte à rebours pour annuler l'arrêt automatique demandé par les programmes qui utiliseraient la fonction "shutdown" de l'api windows ?
J'ai cherché (et j'ai constaté sur internet que je ne suis pas le seul) à faire ça, mais sans succès. Il n'y a rien qui offre la possibilité d'interrompre le shutdown simplement en cliquant sur un bouton.
Gingko a écrit :Il est éventuellement possible d'utiliser la fonction « InitiateSystemShutdownEx » à la place, fonction qui produit le même effet, mais avec la possibilité d'introduire un délai avant extinction, délai affiché à l'utilisateur dans une boîte de dialogue incluant la raison de l'extinction et décompte du temps restant. Mais malheureusement, il n'y a pas de bouton dans cette boîte de dialogue qui permette d'annuler l'extinction, ni d'option pour en ajouter un (on se demande pourquoi, d'ailleurs, ce serait assez logique).

Il y a cependant la possibilité pour l'utilisateur d'exécuter (en ligne de commande) la commande « shutdown -a » (et même de créer un raccourci sur cette commande pour pouvoir l'exécuter rapidement), ce qui a effectivement pour effet d'annuler l'extinction pendant le délai d'attente.
Utiliser InitiateSystemShutdownEx serait déjà mieux. On pourrait alors avoir le temps de réagir et d'au moins sauver le boulot en cours, ou lancer un shortcut "shutdown -a". C'est loin d'être la meilleure solution, mais ce serait déjà un pas dans la bonne direction.
Gingko a écrit :Les deux fonctions ont par ailleurs une option pour spécifier de demander à l'utilisateur de sauvegarder toute donnée d'application non sauvegardée, mais il semble que ça ne marche pas très bien d'après certains commentaires sur Internet.
Cette fonction est intégrée de toute façon au shutdown normal, en tous cas sous Win7. Il est sensé attendre que toutes les applications soient fermées avant de continuer le shutdown. Et pendant qu'il attend, il y a un bouton cancel qui permet d'arrêter le tout, et un force shutdown qui tue toutes les applications encore ouvertes. A ma connaissance, ça marche plutôt bien. Bien sur, ça ne fonctionne que si au moins une application refuse de se fermer, par exemple parce qu'elle présente un dialogue "voulez-vous vraiment quitter sans sauver?".
Gingko a écrit :Après, il y a toujours la possibilité de reproduire une telle boîte de dialogue de toutes pièces dans Pouchin TV Mod, mais là ça risque de prendre plus de temps avant que je me décide à faire ça.
Dommage, ce serait vraiment la solution idéale.

Il y a quelques temps, frustré de n'avoir pas la possibilité d'interrompre un shutdown programmé dans une batch que j'utilisais alors, j'ai écrit un petit programme qui fait exactement ce que je désire. Lancé en ligne de commande, il permet de faire un shutdown, reboot, logoff, sleep ou hibernate mais présente une petite boîte de dialogue avec une progress bar, dans laquelle on peut changer l'option par défaut (comme par exemple changer le shutdown en sleep), et cocher ou décocher la case "force all applications to close". Il y a aussi les boutons OK et, bien sur Cancel. Par défaut, c'est le shutdown avec un délai de 30 secondes, mais on peut changer tout ça en ligne de commande. (ShutdownGUI.exe /? pour afficher les options.) Je le poste ici, car il peut être utile à d'autres. Mais pour pouvoir être utilisé avec PTVM, il manque à celui-ci la possibilité d'exécuter une commande à la fin de l'enregistrement en cours, option que j'ai déjà suggérée ailleurs. Vous voyez peut-être mieux son intérêt avec ce cas concret. J'en profite donc pour réintroduire cette suggestion, qui me semble importante.
Fichiers joints
ShutdownGUI.zip
(177.82 Kio) Téléchargé 63 fois
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Gingko
Administrateur du site et développeur
Messages : 2058
Enregistré le : 05 août 2007, 12:57
Carte Tuner : August DVB-T210 USB + divers autres
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Confirmation du shutdown

Message par Gingko »

r0lZ a écrit :
Gingko a écrit :Les deux fonctions ont par ailleurs une option pour spécifier de demander à l'utilisateur de sauvegarder toute donnée d'application non sauvegardée, mais il semble que ça ne marche pas très bien d'après certains commentaires sur Internet.
Cette fonction est intégrée de toute façon au shutdown normal, en tous cas sous Win7. Il est sensé attendre que toutes les applications soient fermées avant de continuer le shutdown. Et pendant qu'il attend, il y a un bouton cancel qui permet d'arrêter le tout, et un force shutdown qui tue toutes les applications encore ouvertes. A ma connaissance, ça marche plutôt bien. Bien sur, ça ne fonctionne que si au moins une application refuse de se fermer, par exemple parce qu'elle présente un dialogue "voulez-vous vraiment quitter sans sauver?".
Tout dépend de quelle manière l'application informe Windows du fait qu'elle a des données non sauvegardées.

Ce que je vais probablement faire, en fait, est d'implémenter les deux options (extinction normale et extinction forcée). En effet, cette confirmation peut, à l'inverse, être gênante dans le cas où personne n'est devant l'ordinateur pour répondre à la demande d'extinction (cas par exemple d'un ordinateur programmé pour enregistrer en l'absence de son propriétaire).

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Confirmation du shutdown

Message par r0lZ »

Bonne idée.

C'est au message WM_QUERYENDSESSION que vous faites allusion? Si c'est le cas, il a effectivement la réputation de ne pas fonctionner correctement sous Vista. Je ne sais pas si Win7 a aussi ce bug, mais c'est facile à tester.

Malheureusement, je suppose que ce message n'est pas envoyé en cas de sleep, car la session n'est pas terminée, mais seulement suspendue, donc même si ça marche bien sous Win7, je ne pourrai pas l'utiliser pour vérifier que PTVM n'est pas en train de tourner lors du sleep. (J'aurais aimé ajouter ça dans mon soft de gestion de la télécommande, pour tuer PTVM dans ce cas, histoire de ne pas risquer de louper un enregistrement.) Existe-t'il un autre signal, envoyé lorsque l'ordinateur passe en sleep ou hibernate, ou lorsqu'il est réveillé?
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Curtis
Messages : 164
Enregistré le : 27 févr. 2010, 20:15
Carte Tuner : Leadtek DTV1800H
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Confirmation du shutdown

Message par Curtis »

une autre façon de résoudre le problème de r0lZ ce serait d'utiliser la fonction "hibernate/mise en veille" au lieu du mode "shutdown" dans pouchtintvmod ( fonctions à priori déjà présentes dans les dernières versions SVN de pouchintvmod ),

en gros si l'utilisateur a des doutes sur son emploi du temps il peut utiliser la fonction de mise en veille qui permet de recopier les données de la mémoire dans un fichier sur disque dur avant d'éteindre le PC, ainsi si l'utilisateur a changé d'avis et veut rallumer son PC pour continuer à travailler il retrouvera l'intégralité de son bureau ( programmes et données ouverts et actifs avant l'arrêt forcé ) et pourra donc reprendre le travail,

il y a aussi l'option de mise en veille classique ( barrettes mémoires qui continuent à être alimentées ) qui peut servir pour ceux qui n'ont pas assez d'espace disque pour stocker le fichier representant le contenu de la mémoire ( qui sous windows est obligatoirement situé dans la partition où se trouve les fichiers de windows, or quand on a beaucoup de mémoire genre 4 ou 8 Go ça pose problème si la partition C: est petite :mrgreen: )
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Confirmation du shutdown

Message par r0lZ »

Curtis a écrit :une autre façon de résoudre le problème de r0lZ ce serait d'utiliser la fonction "hibernate/mise en veille" au lieu du mode "shutdown" dans pouchtintvmod ( fonctions à priori déjà présentes dans les dernières versions SVN de pouchintvmod ),

en gros si l'utilisateur a des doutes sur son emploi du temps il peut utiliser la fonction de mise en veille qui permet de recopier les données de la mémoire dans un fichier sur disque dur avant d'éteindre le PC, ainsi si l'utilisateur a changé d'avis et veut rallumer son PC pour continuer à travailler il retrouvera l'intégralité de son bureau ( programmes et données ouverts et actifs avant l'arrêt forcé ) et pourra donc reprendre le travail,

il y a aussi l'option de mise en veille classique ( barrettes mémoires qui continuent à être alimentées ) qui peut servir pour ceux qui n'ont pas assez d'espace disque pour stocker le fichier representant le contenu de la mémoire ( qui sous windows est obligatoirement situé dans la partition où se trouve les fichiers de windows, or quand on a beaucoup de mémoire genre 4 ou 8 Go ça pose problème si la partition C: est petite :mrgreen: )
Tout à fait d'accord, et la prochaine version de PTVM devrait avoir cette possibilité de mise en veille. Mais elle ne remplacera pas le shutdown, toujours disponible. Et il reste qu'un arrêt brusque, même pour mettre l'ordi en veille, est parfois frustrant. Pensez à un jeu d'action, par exemple, ou même le départ de l'économiseur d'écran peut vous faire perdre la partie. Il y a aussi beaucoup de programmes qui ne supportent pas bien la mise en veille (la version actuelle de PTVM étant d'ailleurs à compter parmi elles, puisque, après le réveil, la plupart des cartes TV ne fonctionnent plus bien, mais ce sera aussi corrigé dans la prochaine version).

Je plaide donc pour cette petite fenêtre de mise en garde, qui serait la solution idéale et pourrait être utilisée aussi bien avant le shutdown qu'avant la mise en veille. Ou, à défaut, pour l'utilisation lors du shutdown de la fonction InitiateSystemShutdownEx, avec un délai suffisamment long pour qu'on ait largement le temps de sauver ses données et/ou d'activer un raccourci "shutdown -a". Je pense qu'une minute devrait faire l'affaire. Il reste que ça ne résoudra pas le problème d'une mise en veille brusque, mais ça devrait au moins permettre de ne pas perdre ses données.

Et à propos, peut-être serait-il bienvenu dans le cas ou un shutdown ou une mise en veille est programmé, d'ajouter la possibilité de le désactiver via le menu de PTVM (y compris via celui de son icône dans le tray). Il suffirait donc de sélectionner cette option pour éviter tout problème d'arrêt brusque pendant la session courante de PTVM, et de l'activer à nouveau si finalement, on décide de quitter l'ordi avant la fin de l'enregistrement. (Sorry, Gingko, ça fait encore une suggestion! ;-) Mais c'est juste un menu avec un flag à basculer, et à vérifier avant d'appeler la fonction de shutdown ou veille. Ça devrait être trivial à implanter, et ça ne nécessite pas de tests particuliers sous différents systèmes d'exploitation.)
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Gingko
Administrateur du site et développeur
Messages : 2058
Enregistré le : 05 août 2007, 12:57
Carte Tuner : August DVB-T210 USB + divers autres
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : Pantin (IDF, 93)
Contact :

Re: Confirmation du shutdown

Message par Gingko »

r0lZ a écrit :Et à propos, peut-être serait-il bienvenu dans le cas ou un shutdown ou une mise en veille est programmé, d'ajouter la possibilité de le désactiver via le menu de PTVM (y compris via celui de son icône dans le tray). Il suffirait donc de sélectionner cette option pour éviter tout problème d'arrêt brusque pendant la session courante de PTVM, et de l'activer à nouveau si finalement, on décide de quitter l'ordi avant la fin de l'enregistrement. (Sorry, Gingko, ça fait encore une suggestion! ;-) Mais c'est juste un menu avec un flag à basculer, et à vérifier avant d'appeler la fonction de shutdown ou veille. Ça devrait être trivial à implanter, et ça ne nécessite pas de tests particuliers sous différents systèmes d'exploitation.)
Si vous voulez désactiver une mise en veille ou un arrêt programmé, il suffit d'aller dans la boîte de dialogue des enregistrements programmés et de modifier la (ou les) programmation(s) concernée(s).
Si l'enregistrement est déjà commencé, vous pouvez faire la même chose depuis la boîte de dialogue « Arrêter l'enregistrement dans… ».

Je ne pense pas adéquat d'aller ajouter une commande comme celle que vous suggérez, même si c'est facile à programmer, il me semble que ça ferait trop désordre dans l'interface globale de l'application.

Gingko
Gingko
․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․ ․
Tuners utilisés, sur 3 ordis : • USB : August DVB-T210, AverMedia HDTV DVB-T Volar (2×) • PCI : Hauppauge Nova-DT Dual DVB-T • Express Card : AverMedia Digi Express 54
r0lZ
Messages : 110
Enregistré le : 03 févr. 2011, 14:15
Carte Tuner : Asus My Cinema PS3-100/PTS/FM/AV/RC (PCI) et Genius TVGo DVB-T03 (USB)
Êtes-vous un robot ? : Je ne suis pas un robot
Contact :

Re: Confirmation du shutdown

Message par r0lZ »

Gingko a écrit :Si l'enregistrement est déjà commencé, vous pouvez faire la même chose depuis la boîte de dialogue « Arrêter l'enregistrement dans… ».
Ah, OK, je ne savais pas ça. Parfait.
r0lZ
Win7 x64 SP1, Asus My Cinema PS3-100 (PCI) et Genius TVGo DVB-T03 (USB), émetteur TNT de Wavre (Belgique)
Répondre