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 :
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.
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
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);
Partager