StdinWrite
Записывает символы во входной поток STDIN ранее запущенного дочернего процесса.
StdinWrite ( process_id [, data ] )
Параметры
process_id | Идентификатор дочернего процесса (PID), возвращённый предыдущим вызовом функции Run. |
data |
[необязательный] Данные для потока. Это может быть текстом или бинарными данными. |
Возвращаемое значение
Успех: | Возвращает количество переданных символов. |
Ошибка: | Устанавливает @error не равной 0, если STDIN не был перенаправлен на процесс или другая ошибка. |
Примечания
StdinWrite записывает в стандартный входной поток консоли дочернего процесса, который обычно используется консольными приложениями для чтения данных ввода от пользователя, то есть с клавиатуры. Во время вызова функции Run создавая дочерний процесс, в поток которого вы хотите записать, нужно включить параметр STD I/O, указав значение $STDIN_CHILD (1) в функции Run, чтобы она работала правильно (смотрите функцию Run).См. также
StdoutRead, StderrRead, StdioClose, Run, RunAsПример
#include <Constants.au3>
Local $iPID = Run("sort.exe", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
; Записывает строку для сортировки в дочерний sort.exe's Stdin.
StdinWrite($iPID, "Банан" & @CRLF & "Слон" & @CRLF & "Яблоко" & @CRLF & "Олень" & @CRLF & "Автомобиль" & @CRLF)
; Вызов StdinWrite без второго параметра закрывает поток.
StdinWrite($iPID)
Local $sOutput = "" ; Переменная для хранения вывода StdoutRead.
; Читает из дочернего Stdout потока и вывод результата
While 1
$sOutput &= StdoutRead($iPID) ; Читает Stdout поток используя PID возвращённый функцией Run.
If @error Then ; Выход из цикла, если процесс завершён или StdoutRead возвращает ошибку.
ExitLoop
EndIf
WEnd
MsgBox(4096, "", "Сортированная строка: " & @CRLF & $sOutput)