Functions > Process >


Run

Exécute un programme externe.

Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )

Paramètres

program Le chemin d'accès complet du programme ( EXE, BAT, COM, ou PIF ) à exécuter (Voir Remarques).
workingdir [optionnel] Le répertoire de travail. Vide ("") pour utiliser le répertoire de travail courant. Ce n'est pas le chemin du programme.
show_flag [optionnel] Le flag "affichage" du programme exécuté:
    @SW_HIDE = Fenêtre cachée (ou mot-clé Default)
    @SW_MINIMIZE = Fenêtre réduite
    @SW_MAXIMIZE = Fenêtre maximisée
opt_flag [optionnel] Options diverses liées à la façon dont les processus parent/enfant inter-agissent.
    $STDIN_CHILD (0x1) = Fournit un handle pour le flux STDIN de l'enfant
    $STDOUT_CHILD (0x2)= Fournit un handle pour le flux STDOUT de l'enfant
    $STDERR_CHILD (0x4) = Fournit un handle pour le flux STDERR de l'enfant
    STDERR_MERGED (0x8) = Fournit le même handle pour STDOUT et STDERR. Implique à la fois $STDOUT_CHILD et $STDERR_CHILD.
    $STDIO_INHERIT_PARENT (0x10) = Fournit l'enfant avec les flux STDIO du parent. Ce flag ne peut pas être jumelé à un autre flag STDIO. Ce flag n'est utile que lorsque le parent est compilé comme une application Console.
    $RUN_CREATE_NEW_CONSOLE (0x10000) = Le processus de la console de l'enfant doit être créé avec sa propre fenêtre au lieu d'utiliser la fenêtre du parent. Ce flag n'est utile que lorsque le parent est compilé comme une application Console.

Les constantes sont définies dans "AutoItConstants.au3".

Valeur de retour

Succès: Retourne le PID du processus qui a été lancé.
Échec: Retourne 0 et définit @error <> 0.

Remarques

Les chemins qui contiennent des espaces doivent être placés entre guillemets.

Pour exécuter les commandes DOS (console), essayez Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE) ; ne pas oublier l'espace " " avant "/c"

Après avoir exécuté le programme demandé le script continue. Pour mettre en pause l'exécution du script jusqu'à ce que le programme soit terminé, utilisez la fonction RunWait() à la place.

Fournir le paramètre Standard I/O avec les valeurs propres permet une interaction avec le processus enfant à travers les fonctions StderrRead(), StdinWrite() et StdoutRead(). Combiner les valeurs des flags (ou utiliser $STDERR_CHILD, $STDIN_CHILD & STDOUT_CHILD, définis dans Constants.au3) pour gérer plus d'un flux.

Pour les flux de fermeture, les conditions suivantes doivent être remplies:
1) Le processus enfant a fermé la fin de son flux (ce qui arrive lorsque l'enfant ferme).
2) AutoIt doit lire tous les flux capturés jusqu'à il n'y a pas plus de données.
3) Si STDIN est fourni pour l'enfant, StdinWrite() doit être appelée pour fermer le flux. Une fois que tous les flux sont détectés comme n'étant plus nécessaires, toutes les ressources internes seront automatiquement libérées.

StdioClose() force le flux STDIO à se fermer.

En relation

ConsoleRead, ProcessClose, RunAs, RunAsWait, RunWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdioClose, StdoutRead

Exemple

Example()

Func Example()
    ;Exécute le Bloc-notes avec la fenêtre agrandie.
    Local $iPID = Run("notepad.exe", "", @SW_SHOWMAXIMIZED)

    ; Attend 10 secondes pour que la fenêtre du bloc-notes apparaisse.
    WinWait("[CLASS:Notepad]", "", 10)

    ; Attend 2 secondes.
    Sleep(2000)

    ; Ferme le processus Notepad en utilisant le PID retourné par Run.
    ProcessClose($iPID)
EndFunc   ;==>Example