基 础 函 数 参 考


StdinWrite

写入字符到运行的子进程 STDIN 流.

StdinWrite ( 子进程id [, 数据] )

参 数

子进程 ID 子进程 ID, 由先前调用的 Run 返回.
数据 [可选参数] 要输出的数据. 可以是文本或二进制数据.

返 回 值

成功: 返回写入的字符数.
失败: @error 设置为非 0 值, STDIN 不再为进程或其他错误重定向.

备 注

StdinWrite 为子进程写入到控制台标准输入流, 通常使用控制台应用程序读取用户的键盘输入.
对子进程调用 Run 期间, 要写入标准 I/O 值, 参数必须包括 $STDIN_CHILD (1), 函数才能正常工作 (见 the Run 函数).

第二参数是可选参数, 即希望 StdinWrite 写入到流的字符串.
如果函数调用时没有第二个参数, StdinWrite 将关闭流并使后续写入无效.

stream 是一个先进先出的缓冲器,可以任意限制其大小;
当函数被调用时(除非是调用关闭流)时, 如果没有更多字符写入流, 该函数将阻止(暂停),
而不是返回, 直到子进程关闭流, 或者读取足够字符以允许写程序完成.
这意味着 AutoIt 进程将停止, 将不会有任何热键处理, GUI 消息, 等等. 直到子进程从 STDIN 流读取为止.

字符在写入之前转换为 ANSI 码.

二进制数据原样写入, 不会转换为字符串. 打印十六进制表示的二进制数据, 请使用 String() 函数明确转换数据为字符串.

相 关 函 数

StdoutRead, StderrRead, StdioClose, Run, RunAs

函 数 示 例


; 演示 StdinWrite()
#include <Constants.au3>

Local $foo = Run("sort.exe", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
; 写入字串到 STDIN,并由 sort.exe 排序
StdinWrite($foo, "老鼠" & @CRLF & "猫" & @CRLF & "蝙蝠" & @CRLF)
; 函数 StdinWrite 没有第二参数,流关闭
StdinWrite($foo)

; 读子进程的 STDOUT 并显示
Local $data
While True
    $data &= StdoutRead($foo)
    If @error Then ExitLoop
    Sleep(25)
WEnd
MsgBox(0, "调试", $data)

provider with jb51.net (unicode)