Page 1 sur 2

[Ex] Minuteur et Programmateur d'action

Posté : ven. 28 juin 2013 20:35
par Rancar
Bonsoir,
Voici mon premier petit programme :mrgreen:
The End 2.au3
(82.31 Kio) Téléchargé 1171 fois
(Précédemment téléchargé 24 fois)


D'abord, c'est quoi ?
► Afficher le texte
Voici à quoi il ressemble :
► Afficher le texte
Mises à jour :
► Afficher le texte
A faire :
► Afficher le texte
Petites questions : :P
► Afficher le texte
Si vous avez des idées, des remarques ou autre qui pourrait améliorer ce script, je suis preneur :P :lol:
Mon anglais est loin d'être top, si vous remarquez des fautes, merci de me les signaler :)
J'espère que ce script vous sera utile :mrgreen:

Re: [EX]Eteindre ou Redémarrer votre PC à une heure choisie

Posté : ven. 28 juin 2013 21:03
par jguinch
Salut Rancar.
Pas mal ton petit programme...

Petite remarque par rapport à ton script : tu as fait 6 includes mais un seul n'est utilisé (GUIConstantsEx.au3)

Ce que tu pourrais faire pour améliorer ton outil, c'est faire un peu de gestion d'erreur :
Par exemple, si je tappe "125:nimp", le shutdown ne se fera pas mais j'ai quand même un message qui me dit que le PC va s'éteindre à 125:nimp. Tu peux utiliser GUICtrlSetLimit pour limiter à 2 caractères la saisie et utiliser le style $ES_NUMBER pour n'autoriser que les chiffres. Ensuite, restera à tester que les valeurs sont cohérentes (hh < 24 et mm < 60).

Une idée d'évolution serait que le programme permette d'annuler un arrêt programmé (peut être en réduisant dans le systray)

Pour le nom, je propose ShutdownSchedulerAU3

Bonne continuation

Re: [EX]Eteindre ou Redémarrer votre PC à une heure choisie

Posté : ven. 28 juin 2013 21:20
par Rancar
Merci beaucoup ^^

Effectivement, GUIConstantsEx suffit =)

Oui, le problème de mon script est là, si on ne respect pas HH:MM, rien ne se passe... Je vais essayé de résoudre cela avec vos conseils :)

Pour l'annulation, j'y ai pensé mais je n'ai pas trouvé comment annuler cette tâche (car je pense que c'en est une ^^). Si je trouve ça, j'essayerais de "l'AutoITé" :P

Pour l'instant je suis en train de crée une première GUI qui nous demande de choisir entre deux options :
- Action dans ... heures/minutes
- Action à ...h...
J'ai déjà ça :
► Afficher le texte
Il ne reste plus qu'à créer la GUI Action dans ... heures-minutes.

Encore merci à vous :mrgreen:

Re: [EX]Eteindre ou Redémarrer votre PC à une heure choisie

Posté : ven. 28 juin 2013 22:30
par jguinch
ReSalut
J'ai testé : la commande "at" nécessite d'avoir des droits administrateur.

Du coup, je t'ai fait 2 petites fonctions pour l'arrêt planifié et l'annulation de l'arrêt (à priori, pas besoin des droits admin)
► Afficher le texte
A noter que je suis content de moi, car j'ai du mal à me mettre aux API Windows ...

Re: [EX]Eteindre ou Redémarrer votre PC à une heure choisie

Posté : sam. 29 juin 2013 00:16
par Rancar
Quitte à paraître bête, j'ai pas compris vos fonctions et je ne sais pas comment les utiliser :oops: :roll:

Sinon, je vienns de prendre vos premiers conseils en compte en limitant le nombre de caractère à 2 et que des chiffres ^^
J'ai aussi rajouté une autre GUI pour que le script soit plus complet :D
Ce qui donne pour le moment (sans vos fonctions que je ne sais pas utilisé =S) :
► Afficher le texte

Re: [EX]Eteindre ou Redémarrer votre PC à une heure choisie

Posté : sam. 29 juin 2013 07:16
par jguinch
Les 2 fonctions s'utilisent comme ça :

Code : Tout sélectionner

_InitiateSystemShutdown(60) ; arrête le PC dans 60 secondes
_AbortSystemShutdown() ; Annule l'arrêt programmé

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 11:35
par mikell
Remarques de détail
- L'avertissement "Attention, pour les nombres à un seul chiffre..." est assez vilain, faudrait plutôt faire la correction dans le code, exemple :

Code : Tout sélectionner

$heure = "8"
$minute = ""
$time = StringFormat("%02i:%02i", $heure, $minute)
msgbox(0,"", $time)
- Dans ta version 2, fermer l'une des 2 gui d'option exit le script au lieu de juste fermer la gui concernée
- Dans les 'Case button' faudrait inverser le Run et la Msgbox, comme ça la Msgbox peut aussi être utilisée comme warning avant exécution (OK/Annuler)
- Tu devrais prendre l'habitude de nommer les variables de tes controles, par ex. $btn_shutdown au lieu de $Button1, $btn_reboot au lieu de $Button2, etc... ake le jour où tu auras 20+ boutons dans un script complexe tu seras paumé ("mince pour faire ça c'est $Button16 ou $Button17 déjà ?" )

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 15:33
par Rancar
Bonjour :D

jguinch, la fonction d'arrêt fonctionne comme minuteur ou planificateur ? C'est pour savoir si je dois remplacer par ça
► Afficher le texte
ou ça
► Afficher le texte
^^

Et pour la fonction qui pour annuler, elle annule le minuteur ou le planificateur ? Pour le minuteur j'ai trouvé la commande
► Afficher le texte
mais pour le planificateur je n'ai pas trouvé ^^

mikell, merci pour vos remarques qui m'ont permis d'améliorer plusieurs choses :
- Une MsgBox qui demande une confirmation de la commande
- Une facilité d'usage pour les variables
- StringFormat qui permet plus de facilité pour l'utilisateur ^^
- Les GUI ne se ferme qu'elle-même désormais (via @SW_HIDE car GuiDelete bloque l'utilisation de la GUIPrincipale si on ferme une GUISecondaire). J'ai aussi créer uun p'tit bouton Quitter si l'utilisateur veut quitter le programme à la place de devoir fermer deux fenêtres :)

Ce qui donne pour l'instant :
► Afficher le texte
J'éditerais mon premier message lorsque j'aurais les fonctions de jguinch dans mon script :)

Encore merci à vous deux :D

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 17:33
par mikell
Rancar a écrit :"Attention, certaines fonction ne prennent pas en compte le minuteur. Vous pouvez rajouter un Sleep($NbreMSec) si vous voulez absolument mettre un minuteur"
" C'est quoi un Sleep($NbreMSec) ? où je le branche ? on trouve ça où ? faut-y que j'aille chercher sur ***.com ? " :shock:

Tu devrais partir du principe que l'utilisateur sera un blaireau qui ne comprend rien au code et qui de toute façon n'y aura pas accès si tu compiles
ça veut dire ou bien virer la recommandation, ou bien rajouter toi-même un minuteur que l'utilisateur pourra utiliser ou non (nettement plus classe) :wink:

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 17:38
par jguinch
_InitiateSystemShutdown se comporte comme shutdown -t (c'est un minuteur)
Dans cette fonction, tu peux mettre 0 pour un arrêt et 1 pour un reboot dans le dernier paramètre
_AbortSystemShutdown annule un arrêt "minuté" comme shutdown -a

Pour supprimer un tâche programmée (avec la commande at), c'est at [ID] /delete /yes, où ID correspond au numéro de la tâche (il est retourné lors de sa création). Si tu ne spécifie pas ID, ça annule toutes les tâches.
Voir la commande at /? pour l'aide.

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 20:06
par Rancar
Re ^^

Bonne idée Mikell, je ne savais pas trop comment m'y prendre alors j'ai créé un bouton radio qui coché rajoute un Sleep($NbreMSec) ^^

Jguinch, je viens de rajouter vos 2 fonctions et elles semblent fonctionner parfaitement. J'ai juste créé deux _InitiateSystemShutdown, un pour l'arrêt et l'autre pour le redémarrage car la première fois j'ai essayé de mettre _InitiateSystemShutdown(1) et _InitiateSystemShutdown(0) et j'avais eu un soucis donc voilà ^^

J'ai aussi rajouter le bouton annuler grâce à la commande at /delete /yes que vous m'avez fourni ^^
Et j'ai rajouté TrayIconHide parce j'en avais envie et que c'est plus esthétique (à mon avis ^^)

Voilà le script, si il n'y a pas d'erreurs, j'éditerais mon premier message afin que le programme soit à jour :)
► Afficher le texte
Merci à vous deux jguinch et mikell :mrgreen:

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 20:32
par jguinch
Mini-bug de mon côté : quand on ferme les fenêtres "Action dans..." et "Action à...", la fenêtre principale reste réduite.
Pour corriger le problème, il suffit d'inverser 2 lignes et ainsi remplacer :

Code : Tout sélectionner

Case $GUI_EVENT_CLOSE
  GUISetState(@SW_HIDE,$GUISecActionA)
  GUISetState(@SW_SHOW,$GUIPrincipale)
Par :

Code : Tout sélectionner

Case $GUI_EVENT_CLOSE
  GUISetState(@SW_SHOW,$GUIPrincipale)
  GUISetState(@SW_HIDE,$GUISecActionA)

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 20:37
par Rancar
Ah effectivement, je n'y avais pas fait attention ^^

Merci beaucoup pour ton aide jguinch, si tu as d'autres propositions pour améliorer le p'tit script, je les prendrais avec plaisir :mrgreen:

Je vais éditer la présentation de mon 1er message :)

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 20:48
par jguinch
Pour _InitiateSystemShutdown, j'ai l'impression que tu n'as pas saisie la syntaxe.

_InitiateSystemShutdown($iTimeout, $iReboot)
Paramètres :
$iTimeout : temps en secondes avant extinction
$iReboot : 0 pour arrêter ; 1 pour redémarrer.

Exemples :
Eteindre le PC dans 15 minutes :
_InitiateSystemShutdown(15 * 60, 1)

Redémarrer le PC dans 1 heure et 15 minutes :
_InitiateSystemShutdown(3600 + (15 * 60), 0)

Voilà, j'espère que c'est plus clair...

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 20:52
par Rancar
C'est bon comme ceci ?

Code : Tout sélectionner

[...]

$NbreMin = GUICtrlRead($GuiSecActionDANSInputHeure) * 60
$NbreMin2 = GUICtrlRead($GuiSecActionDANSInputMin) + $NbreMin
 $NbreSec = $NbreMin2 * 60
$NbreMSec = $NbreSec * 1000

[...]

Case $GuiSecActionDANSBtnAnnuler
                                    $ReponseMsgBoxAnnuler = MsgBox( 4, "Annuler", "Souhaitez-vous vraiment annuler ?")
                                    If $ReponseMsgBoxAnnuler = 6 Then
                                    _AbortSystemShutdown()
                                    Endif
                                Case $GuiSecActionDANSBtnArreter
                                    $ReponseMsgBoxArret2 = MsgBox( 4, "Arrêter"," Souhaitez-vous vraiment arrêter l'ordinateur dans "&GUICtrlRead($GuiSecActionDANSInputHeure)& " heure(s) et "&GUICtrlRead($GuiSecActionDANSInputMin)& " minute(s) ?")
                                    If $ReponseMsgBoxArret2 = 6 Then
                                    _InitiateSystemShutdown($NbreSec,1)
                                    EndIf
                                Case $GuiSecActionDANSBtnRedem
                                    $ReponseMsgBoxRedem2 = MsgBox( 4, "Redémarrer"," Souhaitez-vous vraiment redémarrer l'ordinateur dans "&GUICtrlRead($GuiSecActionDANSInputHeure)&" heure(s) et "&GUICtrlRead($GuiSecActionDANSInputMin)& " minute(s) ?")
                                    If $ReponseMsgBoxRedem2 = 6 Then
                                    _InitiateSystemShutdown($NbreSec,0)
                                    Endif

[...]

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 22:00
par jguinch
Pour les fonctions d'arrêt et redémarrage c'est bon, mais pourquoi multiplier par 1000 les secondes ?
$NbreMSec = $NbreSec * 1000

Re: [EX] Eteindre ou Redémarrer un PC à une heure choisie

Posté : sam. 29 juin 2013 22:13
par Rancar
C'est pour les Sleep($NbreMSec), ici par exemple :
► Afficher le texte
Mais tout à la fin, il ne sert à rien effectivement ^^

>>> 1er post mis à jour :)

Re: [Ex] Effectuer une action à une heure choisie

Posté : dim. 30 juin 2013 19:44
par Tlem
Salut.
Perso, j'aurais vu un truc plus simple :
► Afficher le texte

Re: [Ex] Effectuer une action à une heure choisie

Posté : ven. 05 juil. 2013 02:50
par Rancar
Hello,

Merci pour votre réponse Tlem ^^

Je viens de m'inspirer très fortement par votre script au niveau de l'interface qui est beaucoup plus conviviale :)

J'en ai aussi profité pour tout simplifier. Désormais, tout se passe dans AutoIT et plus besoin de passer par des commandes Windows ou par des fonctions !

Je m'empresse de vous le montrer :mrgreen:

J'éditerais mon premier message si il n'y a aucune erreur :)

Merci et bonne nuit :P

Code :
► Afficher le texte

Re: [Ex] Effectuer une action à une heure choisie

Posté : ven. 05 juil. 2013 11:18
par DimVar
Bonjour,

Lors du choix de fichiers (explorateur windows), le path du fichier ne s'affiche pas, mais le texte du bouton "parcourir" est modifié.


Cdlt.

[EDIT] Cela provient du controlsettext. L'id 18 est celui du bouton, hors le texte à afficher est sur le champ Input donc ID17. (en ligne 159)

Code : Tout sélectionner

Case $MinuteurBoutonOther
        $MinuteurProgrammeSelect = FileOpenDialog("Sélectionnez le programme à lancer", @HomeDrive, "Programmes (*.exe;*.com;*.bat)", 1)
            If @error Then
                MsgBox(16,"Attention","Aucun fichier n'a été choisi")
            Else
                ControlSetText("The End","",[color=#FF0000][b]17[/b][/color],$MinuteurProgrammeSelect)
            EndIf
[EDIT 2] Je trouve génant d'avoir un racc clavier (ESC) pour annuler une temporisation. Celui-ci étant relativement souvent utilisé. Ne serait il pas préférable de laisser en barre des taches ou trayicon ?