Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2013, 16:04   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Постоянное передача/чтение консольного ввода/вывода

Доброго времени суток!

Есть некое консольное приложение, которое должно общаться с юзером только через моё GUI.

На форме имеется:
Memo
Edit
Button

Надо перенаправлять консольный вывод в Memo, а ввод из Edit в консоль.

Проблем несколько:
Как своевременно обновлять информацию из консоли в Memo?

Отправил ввод, запросил вывод - понятное дело, а вот когда консоль сама что-то новое отображает, как это фиксировать?

Про таймер мне известно, ищу альтернативы.
Человек_Борща вне форума Ответить с цитированием
Старый 07.08.2013, 17:14   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Это типа если другой процесс в эту консоль пишет?

А раз речь идет о конкретном приложении, что мешает запускать его без консоли и с перенаправленным входом/выходом?
waleri вне форума Ответить с цитированием
Старый 07.08.2013, 17:38   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

waleri, на оборот. Другая консоль запускается моим процессом и передает мне весь вывод и получает ввод. Саму консоль юзер не видит.

Консоль не одноразовая, она запускается и работает пока её не выключат руками. Время от времени консоль сама выводит какие-то данные, как мне узнать о том, что в консольном выводе есть что-то новое?

Можно как-то читать, получать вывод без торможения GUI?
Человек_Борща вне форума Ответить с цитированием
Старый 07.08.2013, 20:28   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Если усер консоль не видит откуда там возьмется ввод и зачем нужна такая консоль?

А так смотрите в сторону ReadConsoleInput(), SetConsoleMode()... Только это для стандартной консоли, а судя по тому, что пишете вы, это не совсем обычная консоль...

Наверно будет легче если опишете чего именно хотите добиться...
waleri вне форума Ответить с цитированием
Старый 07.08.2013, 20:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно как-то читать, получать вывод без торможения GUI?
Ну про перенаправление через PIPE ты ведь знаешь?
http://www.programmersforum.ru/showthread.php?t=93579
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.08.2013, 20:56   #6
Игорь С++
Пользователь
 
Регистрация: 23.06.2012
Сообщений: 19
По умолчанию

Как без таймера обойтись я не знаю , а вот то что в данный момент показывает консоль , в своё время писал такую функцию -
Цитата:
void ReadConsole (char *Buff){

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {0, 0};
DWORD dw=0;

ReadConsoleOutputCharacterA(hStdOut ,Buff,170,coord,&dw);

}
ну и конечно же её применение -
Цитата:
int main(int argc, char *argv[])
{

char Buff[1000]={0};

cout<<"Hello World!\n";
cout<<"How are you ?\n";

Sleep(2000);

ReadConsole(Buff);

system("cls");
Beep(500,1000);

Sleep(2000);

cout<<Buff;
}
Игорь С++ вне форума Ответить с цитированием
Старый 09.08.2013, 01:15   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Игорь С++, вы не так поняли.
У меня GUI приложение, и есть чужое приложение консоль. Надо спрятать консоль, перенаправив её ввод/вывод на мой GUI.

Сейчас изучаю JvCreateProcess из JVCL.
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2013, 08:30   #8
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Можно попробовать перенаправление потоков консоли в GUI+асинхронное чтение с консоли с использованием структуры OVERLAPPED
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 09.08.2013, 08:46   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, имхо пост #5 от Stilet - это то, что Вам нужно...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пять способов консольного ввода/вывода Sylest Общие вопросы C/C++ 1 24.10.2012 03:17
Написать рекурсивную процедуру для ввода с клавиатуры последовательности чи-сел (конец ввода – 0) и вывода её на экран в обратном netiv Паскаль, Turbo Pascal, PascalABC.NET 1 17.02.2012 18:14
Форматирование консольного вывода. jojahti Общие вопросы C/C++ 0 15.09.2009 13:17
перехват консольного ввода\вывода Артем5555555 Win Api 14 28.10.2008 23:20
Перехват вывода консольного приложения Роман Радер Общие вопросы Delphi 0 12.02.2007 18:40