[R] Script pour empêcher la mise en veille des écrans

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
dnij
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 25 sept. 2015 10:41
Status : Hors ligne

[R] Script pour empêcher la mise en veille des écrans

#1

Message par dnij » ven. 25 sept. 2015 11:07

Bonjour,
Travaillant à la supervision du réseau mobile, j'ai besoin de créer un script pour que 2 de nos TV de supervision ne se mettent pas en veille.
J'ai également la contrainte de pouvoir arrêter le script avec une touche du clavier au cas où mes collègues ou moi-même aient besoin de travailler sur cette machine.
J'ai donc récupérer les coordonnées des 2 écrans et ai créé le script suivant :

Code : Tout sélectionner

#include <Misc.au3>
#include <MsgBoxConstants.au3>

Local $hDLL = DllOpen("user32.dll")

; la descripition de mon script, je vous passe les détails ;)
While Not _IsPressed("1B", $hDLL)
        MouseMove(-33,10,25)
        MouseMove(45,10,25)
        Sleep(900000)
WEnd
        MsgBox(4096, "Arrêt du script", "Le script n'est plus actif. Pour éviter la mise en veille des écrans, merci de relancer souris.au3 depuis le bureau.")
DllClose($hDLL)
Je pense que mon problème saute aux yeux : le sleep étant inclus dans la boucle, il faut appuyer sur la touche Échap pile au bon moment pour arrêter le script, ça ne me convient donc pas. J'aimerais que le script se coupe en appuyant sur la touche Échap à n'importe quel moment.
Merci d'avance pour vos conseils.
Modifié en dernier par dnij le ven. 25 sept. 2015 20:29, modifié 2 fois.

Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 08:55
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour empêcher la mise en veille des écrans

#2

Message par TomAijerrie » ven. 25 sept. 2015 12:13

Code : Tout sélectionner

HotKeySet("{esc}","Quitter")

While 1
        MouseMove(MouseGetPos(0) + 1 +(-2)*Random(0,1,1), MouseGetPos(1),0);pour décaler aléatoirement la souris de 1 pixel vers la gauche ou la droite, ça dérange moins l'utilisateur
        Sleep(900000)
WEnd

Func Quitter()
        MsgBox(4096, "Arrêt du script", "Le script n'est plus actif. Pour éviter la mise en veille des écrans, merci de relancer souris.au3 depuis le bureau.")
        Exit
EndFunc
 
Sinon tu diminue le délais d'attente et tu laisse la touche echap enfoncé

dnij
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 25 sept. 2015 10:41
Status : Hors ligne

Re: [..] Script pour empêcher la mise en veille des écrans

#3

Message par dnij » ven. 25 sept. 2015 12:26

TomAijerrie a écrit :

Code : Tout sélectionner

HotKeySet("{esc}","Quitter")

While 1
        MouseMove(MouseGetPos(0) + 1 +(-2)*Random(0,1,1), MouseGetPos(1),0);pour décaler aléatoirement la souris de 1 pixel vers la gauche ou la droite, ça dérange moins l'utilisateur
        Sleep(900000)
WEnd

Func Quitter()
        MsgBox(4096, "Arrêt du script", "Le script n'est plus actif. Pour éviter la mise en veille des écrans, merci de relancer souris.au3 depuis le bureau.")
        Exit
EndFunc
 
Sinon tu diminue le délais d'attente et tu laisse la touche echap enfoncé
C'est ce que je fais déjà, mais ça ne m'arrange pas. De +, en laissant la touche Échap enfoncée, la fenêtre de dialogue qui avertit que l'on a coupé le script se ferme sans que l'on puisse la lire.

Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 08:55
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour empêcher la mise en veille des écrans

#4

Message par TomAijerrie » ven. 25 sept. 2015 12:34

Tu as essayé avec mon code ?
HotKeySet ne t'oblige pas à laisser la touche enfoncée

Sinon pourquoi ne pas désactiver la mise en veille, la mise en veille prolonger, l’arrêt du moniteur et des disques durs dans les Options d’alimentation ?

dnij
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 25 sept. 2015 10:41
Status : Hors ligne

Re: [..] Script pour empêcher la mise en veille des écrans

#5

Message par dnij » ven. 25 sept. 2015 14:10

TomAijerrie a écrit :Tu as essayé avec mon code ?
HotKeySet ne t'oblige pas à laisser la touche enfoncée

Sinon pourquoi ne pas désactiver la mise en veille, la mise en veille prolonger, l’arrêt du moniteur et des disques durs dans les Options d’alimentation ?
Désolé je n'avais pas vu ton code.
Tu as résolu mon problème. Étant donné que je dois empêcher la mise en veille sur 2 TV qui sont reliées au même PC je ne peux pas déplacer d'1 seul pixel, sinon la souris ne va pas sur l'écran 2 et il passe en veille au bout de 15 minutes.
Je ne peux pas désactiver la mise en veille car les options d'alimentation sont administrées. J'ai déjà contacté les admins qui ne savent pas faire eux-mêmes :?
Bref, tout fonctionne comme je le veux maintenant, la souris passe d'un écran à l'autre toutes les 15 minutes, avertit l'utilisateur qu'un script est en cours, on peut arrêter le script en appuyant brièvement sur la touche Échap et la boîte de dialogue apparaît pour prévenir l'utilisateur. Un grand merci à toi !!!
Le script final, si ça peut aider du monde :

Code : Tout sélectionner

#include <MsgBoxConstants.au3>

; 
; AutoIt Version: 3.0
; Language:       Français
; Plate-forme:       Windows 7
; Auteur:         ********
;
; Fonction:
;   Bouger la souris automatiquement d'un écran à l'autre, selon une période de temps donnée en appelant la fonction Sleep.
;   De cette manière, le(s) écran(s) ne se mettent jamais en veille.
;

; Tant que la touche "Échap" n'est pas appuyée, la souris passe d'un écran à l'autre toutes les 15 minutes.

HotKeySet("{esc}","Quitter")

While 1
      MouseMove(-33,10,15) ; Envoie le curseur de la souris sur l'écran 1
      MouseMove(45,10,15) ; Envoie le curseur de la souris sur l'écran 2
          Sleep(900000)
      MsgBox(270384, "Script en cours", "Afin d'empêcher la mise en veille des écrans, un script fait bouger la souris automatiquement toutes les 15 minutes. Appuyer sur OK, puis sur Échap pour le désactiver.", 15)
WEnd

Func Quitter()
      MsgBox(270400, "Arrêt du script", "Le script n'est plus actif. Pour empêcher la mise en veille des écrans, merci de relancer souris.au3 depuis le bureau.")
      Exit
EndFunc
Modifié en dernier par orax le ven. 25 sept. 2015 14:10, modifié 1 fois.
Raison : Suppression coloration syntaxique.

Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: [..] Script pour empêcher la mise en veille des écrans

#6

Message par orax » ven. 25 sept. 2015 14:41

L'API Windows propose la fonction SetThreadExecutionState pour empêcher la mise en veille. Je pense que le code suivant devrait également fonctionner (je l'ai testé sur Windows 10).
► Afficher le texte
J'ai supprimé la coloration syntaxique dans tes messages car, étant consommatrice de données et afin de limiter la saturation de la base de donnée, il est préférable de l’utiliser uniquement dans les forums 'Exemples de Scripts', 'Fonctions et UDF' et 'Tutoriels'.
Quand le sujet sera résolu, merci d'éditer le premier message et de remplacer [..] par [R] dans le titre.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)

dnij
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 25 sept. 2015 10:41
Status : Hors ligne

Re: [..] Script pour empêcher la mise en veille des écrans

#7

Message par dnij » ven. 25 sept. 2015 20:27

J'essaierai ça à l'occasion. Merci à vous en tout cas pour vous solutions et votre réactivité.

Répondre