[Ex] Minuteur et Programmateur d'action

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

[Ex] Minuteur et Programmateur d'action

#1

Message par Rancar »

Bonsoir,
Voici mon premier petit programme :mrgreen:
The End 2.au3
(82.31 Kio) Téléchargé 942 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:
Modifié en dernier par Rancar le dim. 08 sept. 2013 15:46, modifié 9 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#2

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#3

Message 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:
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#4

Message 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 ...
Modifié en dernier par jguinch le sam. 29 juin 2013 17:41, modifié 1 fois.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#5

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#6

Message 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é
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#7

Message 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à ?" )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#8

Message 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
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#9

Message 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:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#10

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#11

Message 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:
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#12

Message 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)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#13

Message 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 :)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#14

Message 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...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#15

Message 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

[...]
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#16

Message par jguinch »

Pour les fonctions d'arrêt et redémarrage c'est bon, mais pourquoi multiplier par 1000 les secondes ?
$NbreMSec = $NbreSec * 1000
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#17

Message 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 :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#18

Message par Tlem »

Salut.
Perso, j'aurais vu un truc plus simple :
► Afficher le texte
Fichiers joints
Programmateur.png
Programmateur.png (11.96 Kio) Vu 15494 fois
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rancar
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 11 avr. 2013 23:46
Localisation : Bruxelles
Status : Hors ligne

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

#19

Message 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
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

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

#20

Message 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 ?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Répondre