[..] Fonction qui s'exécute selon un jour particulier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
r140
Niveau 2
Niveau 2
Messages : 28
Enregistré le : sam. 27 oct. 2007 15:31
Status : Hors ligne

[..] Fonction qui s'exécute selon un jour particulier

#1

Message par r140 »

Bonjour,

J'ai créer le code suivant qui permet de s'exécuter selon un jour particulier, le problème est

je voudrai afficher seulement les messages d'erreurs et qu'il filtre les messages d'informations

J'ai utilisé ShellExecuteWait car je n'ai pas réussi à utilisé les commandes externes avec runwait.
J'ai utilisé l'option @hide afin de ne pas alourdir le programme car celui-ci est exécuté plusieurs fois dans un fichier de commandes

Avez vous déjà résolu ce type de problème ?
Merci

Code : Tout sélectionner

#include <Date.au3>
#cs fevrier 2011
Ce Programme permet de lancer des programmes selon un jour definit
#ce Pour fonctionner, il doit être compiler avec l'option console disponible avec l'executable d'autoit

local $program,$joursem,$wday,$string,$n,$nerr

If $CmdLine[0] = 0 OR $CmdLine[0] < 2 or $CmdLine[0] > 2 Then 
Call("Console")
exit
EndIf   

If $CmdLine[2] < 0 OR $CmdLine[2] > 7 Or $CmdLine[2] == "" Then 
Call("Console")
Exit
EndIf   

$wday=@WDAY-1
if @WDAY=0 then $wday=7

$program=$cmdLine[1]
$joursem=$cmdline[2]
$joursem=StringSplit($joursem, ",")
For $n=1 to $joursem[0]
if $wday = $joursem[$n] then 
    $nerr=ShellExecuteWait($program,"","","",@SW_HIDE) 
Else
    If $nerr = 0 Then
EndIf
    ConsoleWrite($nerr&@CRLF)   
EndIf
Next
Exit

Func Console()
    ConsoleWrite(@CRLF)
    ConsoleWrite("Fevrier 2011 - "&@CRLF&@CRLF)
    ConsoleWrite("Vous devez specifier le programme a lancer et le jour de la semaine de 1 a 7"&@CRLF)
    ConsoleWrite("Ex: Runday ""Programd"" 1"&@CRLF)
    ConsoleWrite("Lance ""Programd"" le lundi"&@CRLF&@CRLF)
    ConsoleWrite("Ex: Runday ""Programd"" 1,2"&@CRLF)
    ConsoleWrite("Lance ""Programd"" le lundi et le mardi"&@CRLF)
Sleep(3000)
EndFunc
 
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Fonction qui s'exécute celon un jour particulier

#2

Message par zeshrek »

Heuuuuu.... je peux poser une question idiote ?
Pourquoi ne pas utiliser le gestionnaire de tache plannifiées de windows ?
Il permet de choisir la tache a lancer (executable) la répétitivité (hebdo, quotidienne, le premier [lundi à dimanche] du mois...etc), l'heure... etc. Bref, c'est un outil complet et efficace, bien intégré dans l'OS.
Maintenant, moi je dis ca, je dis rien ;)


Sinon, dans ton code y a un truc qui me perturbe :

Code : Tout sélectionner

For $n = 1 To $joursem[0]
    If $wday = $joursem[$n] Then
        $nerr = ShellExecuteWait($program, "", "", "", @SW_HIDE)
    Else
        [color=#FF0000]If $nerr = 0 Then
        EndIf[/color]
        ConsoleWrite($nerr & @CRLF)
    EndIf
Next
Les 2 lignes que j'ai mises en rouge ne servent a rien.
Tu fais un if, et si la condition est valide tu ne fais rien. donc autant pas faire ce test.

Pour arriver au résultat que tu veux, cad afficher le code de sortie de ton appli si il y a eu erreur a ta place je ferai qqchose du genre de ceci :

Code : Tout sélectionner

For $n = 1 To $joursem[0]
    If $wday = $joursem[$n] Then
        $nerr = ShellExecuteWait($program, "", "", "", @SW_HIDE)
        If @error Then
            ConsoleWrite($nerr & @CRLF)
        EndIf
    EndIf
Next 
Enfin, perso, je me serais affranchi de la console en utilisant des msgbox, ce qui élimine une contrainte de compilation (mais ce n'est qu'une suggestion)
► Afficher le texte
Si vis pacem para bellum
Répondre