Re[4]: Работа с консоль-приложением из Windows оболочки
От: Alexche  
Дата: 26.09.01 01:10
Оценка:
Здравствуйте Alex Fedotov, вы писали:


AF>Медленно наверное потому, что читается по одному байту. Я бы сделал буфер

AF>побольше.

AF>А виснет скорее всего потому, что ты не закрываешь хэндл того конца пайпа,

AF>который отдаешь дочернему процессу. В результате для этого конца пайпа
AF>получается два хэндла: один в дочернем процессе и один в твоем процессе.
AF>Когда дочерний завершается, его хэндл закрывается, но поскольку есть еще
AF>один незакрытый хэндл, пайп остается живым с обоих сторон и для ReadFile
AF>нет никакой причины возвращать управление.

Спасибо, все заработало! Сделал буфер 80 байт — стало быстрее.
Теперь возникла другая проблема — прочитанные байты я отправляю в CEdit,
но текст появляется только после завершения дочернего процесса.
Пробовал в цикле добавить:

MSG Msg;
GetMessage(&Msg, NULL, 0, 0);
DispatchMessage(&Msg);

Обновляется, но если я скрываю CEdit, изменяя размеры окна,
то программу приходится "подгонять" мышью (move, click),
иначе программа как-бы подвисает.
А как сделать правильно?
Alexche
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.