Мммм... можно сказать, что решилось.
1. Отсылаю команду №1
2. Читаю ответ
3. Отсылаю команду №2
4. Жду 0,5 сек.
5. Читаю ответ
Так ответы получаются разные. Но тоже не совсем гладко. Второй ответ включает в себя и первый тоже. Таким образом, возникает проблема разбора. Вот если бы предыдущий ответ удалялся...
К счастью, протокол GTP предусматривает нумерацию запросов и ответов, т.ч. здесь всё-таки можно что-то придумать.
"Окончательный" код
Код:
#include <Constants.au3>
AutoItSetOption("ProvideRunStdout", 1)
AutoItSetOption("ProvideRunStdin", 1)
$PID = Run("gnugo.exe --mode gtp", '', @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
Sleep(1000) ; даём время на запуск
StdinWrite($PID, "1 version" & @CRLF) ; передаём первую команду
$line = StdoutRead($PID, 1) ; читаем ответ
MsgBox(0,0, $line)
StdinWrite($PID, "2 showboard" & @CRLF) ; передаём вторую команду
Sleep(500) ; выжидаем
$line = StdoutRead($PID, 1) ; читаем ответ
MsgBox(0,0, $line)