Page 1 sur 1

[EX] Contrôle Extinction du PC

Posté : jeu. 19 juin 2014 23:23
par ca13x
Bonjour à tous,

J'ai développé ces deux petit script, suite à une demande de ma famille, afin qu'il puisse définir un quota d'heure.

Ceux-ci sont mes premiers avec AutoIt. (formidable outil au passage)

Celui ci est pour programmer l'extinction:

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Downloads\horloge-icone-9663.ico
#AutoIt3Wrapper_Outfile=Programmer l'extinction.exe
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_LegalCopyright=ca13x_
#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs
; Version AutoIt :    3.4.1
; Langue     :        Français
; Plateforme :        Windows XP/7/8
; Auteur    :         ca13x_
;
; Fonction du script : Programmer l'extinction de l', avec accès protégé.
;
; Version 1.0 : 06/2014
#ce


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


; Protection du lancement par mot de passe
Do
    $pass = "brest"
    $input = InputBox("Arrêt du PC", "Entrez le mot de passe :")

    If ($input <> $pass) Then
        MsgBox(0,"Arrêt du PC", "Mauvais mot de passe !")
    Else
        MsgBox(0,"Arrêt du PC", "Le mot de passe est correct !")
    EndIf

; fenêtre avec demande du delai en minutes
$box = GUICreate("Compte à rebours  avant extinction", 578, 138, 219, 218)
GUISetBkColor(0x3B99FE)

$Label1 = GUICtrlCreateLabel("Entrez en minutes le temps avant l'extinction du PC, puis cliquez sur OK.", 16, 30, 543, 27, $SS_CENTER)
GUICtrlSetFont(-1, 12, 400, 0, "Comic Sans MS")
GUICtrlSetColor(-1, 0xFFFFFF)

$minutes = GUICtrlCreateInput("", 200, 88, 33, 27, BitOR($ES_CENTER,$ES_NUMBER))
GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
GUICtrlSetColor(-1, 0x3B99FE)

$OK = GUICtrlCreateButton("OK", 320, 88, 57, 25, $WS_GROUP)
GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")


GUISetState(@SW_SHOW, $box)


;creation de la commande shutdown
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $minutes
            If $minutes >= 1 Then
                $min = GUICtrlRead($minutes)
                $min *= 60
                Run(@ComSpec & " /c shutdown -s -t " & $min, "", @SW_HIDE)
                GUISetState(@SW_HIDE, $box)
                                Sleep(1000)
            ElseIf $minutes = "" Then
                MsgBox(0, "Alerte !", "Veuillez entrer un chiffre.")
            EndIf
            If WinWaitActive("Arrêt du système") Then
                WinSetState("Arrêt du système", "", @SW_HIDE)
            EndIf

            EndSwitch
WEnd

Until ($input = $pass)
Celui ci pour annuler l'extinction:

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Downloads\feu-vert--icone-5166.ico
#AutoIt3Wrapper_Outfile=Annuler l'Extinction.exe
#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs
; Version AutoIt :    3.4.1
; Langue     :        Français
; Plateforme :        Windows XP/7/8
; Auteur    :         ca13x_
;
; Fonction du script : annuler extinction
;
; Version 1.0 : 06/2014
#ce

Do
    $pass = "brest"
    $input = InputBox("Annuler l'Extinction", "Entrez le mot de passe :")

    If ($input <> $pass) Then
        MsgBox(0,"Annuler l'Extinction", "Mauvais mot de passe !")
    Else
        MsgBox(0,"Annuler l'Extinction", "Le mot de passe est correct !")
        Run(@ComSpec & " /c shutdown -a ", "", @SW_HIDE)
        MsgBox(64, "Confirmation", "L'Arrêt Programmé de votre PC est annulé")

    EndIf

Until ($input = $pass)
 
J'ai crée un installateur qui copie les 2 script (en .exe) dans le repertoire C:\ProgramData\Microsoft\Windows\Start Menu\Programs afin que l'utilisateur puisse les executer à la demande.

1-Le problème c'est que le script est compilé avec le mot de passe [brest], et je ne sais pas comment crée une fenêtre qui demanderais de saisir le mot de passe choisis au premier lancement, puis enregistre sa dans un fichier .conf, avez vous une idée ?

2- Et je souhaitais désactiver la fonction "pause script/quitter" qui s'affiche à côté de l'horloge, mais pareille je bloque.

Merci de vos retours !

Re: [EX] Contrôle Extinction du PC

Posté : jeu. 19 juin 2014 23:34
par Tlem
Bonsoir.
Pas d'exécutable dans les pièces jointes (même compressées).
Merci d'avance.

Pour le menu pause, rajoutez : #NoTrayIcon
Pour la boite de dialogue, cherchez dans la documentation la fonction InputBox().

Re: [EX] Contrôle Extinction du PC

Posté : jeu. 19 juin 2014 23:38
par ca13x
Tlem a écrit :Bonsoir.
Pas d'exécutable dans les pièces jointes (même compressées).
Merci d'avance.
Bonsoir,

C'est modifié :)

Re: [EX] Contrôle Extinction du PC

Posté : ven. 20 juin 2014 00:17
par Tlem
Merci.

Voici un modèle assez complet de ce que vous cherchez à faire :
► Afficher le texte
Il y a quelques contrôles, mais aussi le cryptage du mot de passe. ;)

Re: [EX] Contrôle Extinction du PC

Posté : dim. 22 juin 2014 16:27
par ca13x
Merci pour votre retour, cela m'a permis de voir comment crypter le mot de passe et surtout découvrir la commande Inniread InniWrite.

L'idée est la suivante j'ai pu avance un peu grâce à vous mais je reste bloquer sur quelques points:

1: Au lancement si le fichier .conf existe alors demande du mot de passe, et verification par rapport à l'entrée du .conf si ok on rentre sinon on redemande le mot de passe
2: si le fichier n'existe pas alors demande de création d'un mot de passe qui sera enregistré dans le .conf

j'ai bien essayé $readpass <> $inputmdp mais celà ne passe pas, comment récupere ton la valeur entrée dans une inputbox ?
et a contrario comment enregistre t'on la valeur d'une inputbox dans un .conf

Merci de votre aide

Re: [EX] Contrôle Extinction du PC

Posté : dim. 22 juin 2014 18:03
par Tlem
Bonjour.
J'ai édité mon script précédent en fonction de votre demande.

Bonne lecture. ;)