Ferme toutes les ressources associées à un processus lancé précédemment avec la redirection STDIO.
StdioClose ( process_id )
process_id | L'ID du processus enfant, tel que retourné par un appel précédent à Run. |
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é. |
Run, RunAs, StderrRead, StdinWrite, StdoutRead
#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