IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Connaître le temps restant avant la mise en veille


Sujet :

Windows

  1. #1
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 410
    Points : 2 054
    Points
    2 054
    Par défaut Connaître le temps restant avant la mise en veille
    Bonjour,
    Tout est dans la question, mais j'explique mon besoin au cas où il y aurait une autre possibilité.

    J'ai un laptop connecté en HDMI à un écran TV.
    De cet fait je n'ai plus le son du PC mais celui de l'écran.
    J'ai une tâche planifiée qui réveille le PC toutes les 30mn pour m'avertir par synthèse vocale de la présence de nouveaux courriers.
    Jusque là tout va bien.
    Lorsque je n'utilise pas le PC, je mets manuellement en veille la TV, mais comme le câble HDMI est toujours branché je n'ai pas de son.

    Je contourne le pb avec DisplaySwitch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @Cde = ( "C:/Windows/System32/DisplaySwitch.exe /internal" ); #/internal /clone /extend /external
    ...
    @Cde = ( "C:/Windows/System32/DisplaySwitch.exe /external" ); #/internal /clone /extend /external
    Mais là lorsque je suis sur le PC, je passe de l'écran TV à l'écran du PC pendant 1 ou 2 secondes, ce n'est pas la mort, mais j'aimerais éviter.

    Donc si je pouvais tester le temps restant avant la mise en veille du PC cela équivaudrait à tester ma présence, et donc à ne pas switcher en /internal

    MERCI d'avance pour vos lumières

    [EDIT 09:11] PS :
    Dans d'autres programmes j'utilise les API de veille, mais je n'ai pas trouvé le moyen de récupérer le temps restant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    use Win32::API;
    $Win32::API::DEBUG = 0;
    # Invalidation de la veille d'écran
    my $EcranVeille = new Win32::API("user32", "SystemParametersInfo",'II');
    $EcranVeille->Call(17,0);
    
    # Invalidation estompage et extinction écran - doit être appelé régulièrement en sub Prog_Lignes
    my $EcranExtinction = new Win32::API("kernel32", "SetThreadExecutionState",'I');
    $EcranExtinction->Call(2147483648);

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 532
    Points
    13 532
    Par défaut
    GetLastInputInfo te donne la durée depuis laquelle aucune action utilisateur n'a été effectuée (clavier ou souris).
    Soustraite au délai d'activation de la mise en veille devrait te donner le temps restant

  3. #3
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 410
    Points : 2 054
    Points
    2 054
    Par défaut
    SUPER Andnotor

    En fait je ne fais pas de calcul à partir du temps de veille qui est de 2mn alors que l'ensemble des BAL est contrôlé dans les 40s environ.
    Donc au delà de 30s d'inactivité et s'il y a un courrier, ce qui est exceptionnel, je déclenche le DisplaySwitch.exe internal/external ce qui me permet d'avoir le message audio sur le PC et de revenir dans la foulée sur la TV qui est en veille.

    Je fais un petit extrait de l'équivalent Perl de C++ pour les personnes intéressées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Win32::API;
    $Win32::API::DEBUG = 0;
    
    my $GetLastInputInfo = Win32::API->new("user32.dll",'GetLastInputInfo','P','I');
    my $GetTickCount = Win32::API->new("kernel32.dll",'GetTickCount','','I');
    
    sub get_user_idle_time {
        my $buffer = pack "VV", 8,0;
        $GetLastInputInfo->Call($buffer)
            or die "Echec GetLastInputInfo \n\t $! - $@";
        my ($size,$time) = unpack "VV", $buffer;
        my $now = $GetTickCount->Call;
        return int (($now-$time) / 1000);
    };
    
    my $touch = get_user_idle_time();
    print "Sans rien toucher pendant $touch secondes\n";
    
    sleep(15);
    
    $touch = get_user_idle_time();
    print "Sans rien toucher pendant $touch secondes\n";
    MERCI beaucoup Andnotor !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Décompte du temps restant avant function reloading
    Par josse34 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/01/2014, 11h22
  2. Compteur de temps restant avant un achat
    Par jzeel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/03/2011, 16h38
  3. connaître le temps restant avant Ontimer
    Par OutOfRange dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/08/2007, 14h07
  4. Réponses: 23
    Dernier message: 29/07/2004, 00h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo