Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 135
Благодарности: 32

Профиль | Отправить PM | Цитировать


Creat0R
Эта Функция в её текущем виде не предназначена для чтения из консоли, она задумана мной только для преобразования искажённого текста.
Т.е я заставляю консоль испортить кирилический текст, как она это делает обычно, но только в нужную нам сторону. Но если ты хочешь использовать StdoutRead() непосредственно по назначению, т.е для чтения стандартного потока из консоли...

Пример кода был взят из справки AutoIt v 3.2.2.0
$STDOUT_CHILD = 2 Необходима для получения StdoutRead() в первом цикле
$STDERR_CHILD = 4 Необходима для получения StderrRead() во втором цикле
Имена констант очевидно говорят об их предназначении (см. справка: StdoutRead и StderrRead)
Константы влияют только на возможность чтения потока из консоли. При этом возможность сохраняется до тех пор, пока ты делаешь запросы StdoutRead(), вплоть до закрытия самой консоли.
Код: Выделить весь код
; Demonstrates StdoutRead()
#include <Constants.au3>

$foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
Wend

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    ;MsgBox(0, "STDERR read:", $line)
Wend

MsgBox(0, "Debug", "Exiting...")
Понятно, что разработчики при написании справки не подумали о нас русских и, как следствие, о существовании кирилицы.
Исправляем этот недостаток заменой первой строки в коде:
Код: Выделить весь код
$foo = Run(@ComSpec & " /c graftabl 1251 | dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

Отправлено: 20:48, 17-01-2007 | #138