Functions > Process >


StdioClose

Ferme toutes les ressources associ�es � un processus lanc� pr�c�demment avec la redirection STDIO.

StdioClose ( process_id )

Param�tre

process_id L'ID du processus enfant, tel que retourn� par un appel pr�c�dent � Run.

Valeur de retour

Succ�s: Retourne une valeur non nulle.
�chec: Retourne 0 si le processus n'a pas eu de redirection STDIO ou �tait d�j� ferm�.

Remarque

Cette fonction ferme toutes les handles et lib�re toutes les ressources relatives � STDIO. Il ne sera plus possible de lire les donn�es de STDIO � partir du processus. Toutes les donn�es en attente seront perdues.

En relation

Run, RunAs, StderrRead, StdinWrite, StdoutRead

Exemple

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3> ; N�cessaire pour _ArrayDisplay seulement.

; Affiche de mani�re r�cursive une liste de fichiers dans un r�pertoire.
Example()

Func Example()
    Local $sFilePath = @ScriptDir ; Recherche dans le r�pertoire du script en cours.
    Local $sFilter = "*.*" ; Recherche tous les fichiers dans le r�pertoire courant. Pour une liste des caract�res g�n�riques valides, recherchez 'caract�res g�n�riques' dans le fichier d'aide.
    Local $sOutput = "" ; Stocke la sortie de StdoutRead dans une variable.

    ; Si le chemin du fichier n'est pas un r�pertoire alors Return de la fonction 'Example'.
    If Not StringInStr(FileGetAttrib($sFilePath), "D") Then
        Return SetError(1, 0, 0)
    EndIf

    ; Enl�ve les antislashs de fin et ajoute une simple barre oblique inverse.
    $sFilePath = StringRegExpReplace($sFilePath, "[\\/]+\z", "") & "\"

    #cs
        Param�tres en ligne de commande pour DIR:
        /B - Simple sortie.
        /A-D - Recherche tous les fichiers, moins les r�pertoires.
        /S - Recherche dans les sous-r�pertoires.
    #ce
    Local $iPID = Run(@ComSpec & ' /C DIR "'& $sFilePath & $sFilter & '" /B /A-D /S', $sFilePath, @SW_HIDE, $STDOUT_CHILD)

    ; Ferme le flux Stdio du PID retourn� par Run. Cela entra�nera que la bo�te de message ne sera pas capable de lire le flux de sortie standard.
    StdioClose($iPID)

    $sOutput = StdoutRead($iPID)
    ; Sort de la boucle si le processus ferme ou si StdoutRead retourne une erreur.
    While @error = 0
        ; Lit le flux Stdout du PID retourn� par Run.
        $sOutput &= StdoutRead($iPID)
    WEnd

    ; Utilise StringSplit pour partager la sortie de StdoutRead en un tableau. Tous les retours chariot (@CRLF) sont supprim�s et @CRLF (saut de ligne) est utilis� comme s�parateur.
    Local $aArray = StringSplit(StringTrimRight(StringStripCR($sOutput), StringLen(@CRLF)), @CRLF)
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "", "Il semble qu'il y ait eu une erreur en essayant de trouver tous les fichiers dans le r�pertoire du script courant.")
    Else
        ; Affiche les r�sultats.
        _ArrayDisplay($aArray)
    EndIf
EndFunc   ;==>Example