Автор Тема: Не могу прочитать из потока. Не могу записать в поток. Cmd.exe  (Прочитано 2339 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн newbie215 [?]

  • Новичок
  • *
  • Сообщений: 18
  • Репутация: 0
  • Пол: Мужской
    • Награды
Привет! Пишу библиотеку для считывания из потока и записи в поток интерпретатора Windows cmd.exe. Возникла проблема: срабатывает программа только один раз, т.е. ввожу команду, например help, нажимаю Send, выводится результат, потом ввожу еще раз команду, нажимаю Send, результата нет. Не могу разобраться у меня чтение или запись не работает.
Код: AutoIt [Выделить]
#include<GUIConstantsEx.au3>
#include<Constants.au3>

$Win = GUICreate(@UserName,600,800)
$ResultEdit = GUICtrlCreateEdit("",10,10,580,670);Сюда выводится результат
$CMLineEdit = GUICtrlCreateEdit("",10,680,580,80);Сюда вводятся команды
$SendButton = GUICtrlCreateButton("Send",10,770,80,20);Отправить команду интерпретатору
$sPid = Run("C:\Windows\system32\cmd.exe",@SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
GUISetState(@SW_SHOW)
While 1
    $GUIGetMsg = GUIGetMsg()
    If $GUIGetMsg = $SendButton Then
        $sResult = ""
        $sLine = GUICtrlRead($CMLineEdit)
        StdinWrite($sPid,$sLine)
        StdinWrite($sPid,@CRLF)
        StdinWrite($sPid)
        While 1
            $sResult &= StdoutRead($sPid,False,False)
            If @error Then ExitLoop
        WEnd
        GUICtrlSetData($ResultEdit,$sResult)
        GUICtrlSetData($CMLineEdit,"")
    EndIf
    If $GUIGetMsg = $GUI_EVENT_CLOSE Then Exit
WEnd
 


Русское сообщество AutoIt


Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2949
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Онлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 4099
  • Репутация: 1086
    • Награды
  • Версия AutoIt: 3.3.14.0
newbie215
Вот готовая реализация http://autoit-script.ru/index.php?topic=13144.msg84107#msg84107

А по вашему коду: перенесите строку запуска cmd в обработчик кнопки
(нажмите для показа/скрытия)

Русское сообщество AutoIt

Re: Не могу прочитать из потока. Не могу записать в поток. Cmd.exe
« Ответ #2 Отправлен: Январь 30, 2014, 22:15:36 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
1880 Просмотров
Последний ответ Март 09, 2014, 22:24:07
от joiner
2 Ответов
1454 Просмотров
Последний ответ Июнь 15, 2015, 20:58:18
от avtoIT
5 Ответов
2315 Просмотров
Последний ответ Июнь 19, 2015, 22:51:19
от Kaster
10 Ответов
3120 Просмотров
Последний ответ Июль 25, 2015, 14:37:39
от tarhitay
2 Ответов
1306 Просмотров
Последний ответ Август 08, 2015, 00:10:29
от Vovsla
3 Ответов
1847 Просмотров
Последний ответ Август 06, 2015, 15:44:29
от firex
10 Ответов
1400 Просмотров
Последний ответ Ноябрь 17, 2017, 16:29:32
от Ed_Vard
2 Ответов
325 Просмотров
Последний ответ Сентябрь 10, 2018, 15:48:58
от MT-11
1 Ответов
207 Просмотров
Последний ответ Октябрь 25, 2018, 11:39:48
от musicstashall
2 Ответов
756 Просмотров
Последний ответ Ноябрь 21, 2018, 09:14:46
от eralex