Funktionsreferenz

StdinWrite

Schreibt eine Anzahl von Zeichen in den STDIN-Stream eines zuvor gestarteten Child-Prozesses.

StdinWrite ( process_id[, data] )

 

Parameter

process_id Die Prozess-ID eines Child-Prozesses, wie aus einem vorigen Aufruf von Run zurückgegeben.
data [optional] Die auszugebenden Daten. Diese können entweder Text oder binär sein.

 

Rückgabewert

Erfolg: Gibt die Anzahl der geschriebenen Zeichen zurück.
Fehler: Setzt @error auf nicht-Null, falls STDIN an diesen Prozess nicht weitergeleitet wurde oder falls ein anderer Fehler auftrat.

 

Bemerkungen

StdinWrite schreibt in den Konsolen-Standard-Eingabe-Stream eines Child-Prozesses, der normalerweise von Konsolen-Applikationen genutzt wird, um Benutzereingaben zu lesen, z.B. von der Tastatur. Während des Aufrufs von Run für den Child-Prozess, in den man schreiben möchte, muss der STD I/O Parameter den Wert von $Stdin_Child (1) enthalten, damit diese Funktion richtig arbeitet (siehe die Funktion Run).

Der zweite, optionale, Parameter enthält den String, den man mit StdinWrite in den Stream schreiben möchte. Wenn die Funktion ohne zweites Argument aufgerufen wird, dann schließt StdinWrite den Stream und macht weiteres Schreiben in ihn ungültig.

Der Stream ist ein FIFO Puffer willkürlicher Grösse. Sollte, wann immer die Funktion aufgerufen wird (es sei denn, sie wird aufgerufen, um den Stream zu schliessen) nicht genügend Platz sein, um Zeichen in den Stream zu schreiben, blockiert (pausiert) StdinWrite, bis der Child-Prozess den Stream schließt oder genügend Zeichen aus dem Stream liest, um den Schreibvorgang zu vollenden. Das bedeutet, der AutoIt Prozess wird solange gestoppt -und es findet keine Verarbeitung von Hotkeys, GUI-Nachrichten, etc. statt- bis der Child-Prozess aus dem STDIN-Stream liest.

Zeichen werden in ANSI umgewandelt bevor diese geschrieben werden.

Binärdaten werden so geschrieben wie sie sind. Sie werden nicht in einen String umgewandelt. Um die hex Darstellung von Binärdaten auszugebenen ist die String()-Funktion zu verwenden. Dadurch werden die Daten explizit in einen String umgewandelt.

 

Verwandte Funktionen

StdoutRead, StderrRead, StdioClose, Run, RunAs

 

Beispiel


; Demonstriert den Gebrauch von StdinWrite()
#include <Constants.au3>

Local $foo = Run("sort.exe", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
; Schreibt den zu sortierenden String in sort.exe's STDIN
StdinWrite($foo, "Ratte" & @CRLF & "Katze" & @CRLF & "Fledermaus" & @CRLF)
; Aufruf ohne zweites Argument schliesst den Stream
StdinWrite($foo)

; Lies aus dem Child's STDOUT und zeige es an
Local $data
While True
    $data &= StdoutRead($foo)
    If @error Then ExitLoop
    Sleep(25)
WEnd
MsgBox(0, "Debug", $data)