![]() |
|
Модераторы: Poseidon |
![]()
|
|
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Нужно сделать так, чтобы выводимая информация из запускаемых программы из моей программы (консоль) выводились не стандартными средствами, а проходила через мои обработчики.
Пытался делать через перенаправление вывода (вроде system("prog.exe > 1.txt")), читать из файла, а потом выводить. Так работает, но только для тех программ, где не надо ничего вводить. Например, для system("pause") не работает. Сначала идет ожидание нажатия клавиши, потом уже текст. Подскажите, пожалуйста, что делать, и, если можно, примерчик. |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
ИванМ, идея вообще-то следующая:
Всё вроде верно, но сообщение не срабатывает. Я уже и так и эдак, но что-то так и не получилось. Попробуйте, может на базе этой идеи вы и найдёте верное решение. Это сообщение отредактировал(а) t_gran - 22.11.2010, 08:52 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
t_gran, если честно, я вообще не понял вашу идею. Можете объяснить, что вы имели ввиду?
|
|||
|
||||
| t_gran |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
ИванМ, как вы уже должны были понять, работа ведётся естественно через pipes. Прокомментированный код (test.c):
И по идее при вводе:
Должно без задержки вылезти следующее:
Но эта зараза не хочет глотать сообщение о нажатии клавиши SPACE! -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||
|
|||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 16 Всего: 306 |
ИванМ,
здесь есть еще два варианта решения проблемы: 1. Это воспользоваться специализированными API для работы с консолью. Console Function Понятно - копать надо в сторону ReadConsole и же с ней. 2. Это пайпы, т.е. Pipe Functions Стартовать с CreatePipe или с CreateNamedPipe. Какой именно пайп выбрать - именованный или анонимный - на самопроработку через гугл. Чисто мое мнение - конечно Console API будет по проще, однако пайпы более гибки. |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
t_gran, забыл уточнить, что ввод тоже должен происходить через мои обработчики. Так что отправка сообщений чтобы эмулировать ввод нельзя делать.
mrbrooks, можно пример с Console API? Чтобы было понятнее, сформулирую задачу. Нужно сделать, что бы ввод и вывод на консоль происходил внутри ограниченной области. Я сделал обертку WriteConsole и ReadConsole, все прекрасно работает, пока не происходит вызов других консольных приложений, которые не знают о моей ограниченной области. Это сообщение отредактировал(а) ИванМ - 23.11.2010, 13:57 |
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 16 Всего: 306 |
эм. ты думаешь это будет кардинально отличаться от:
или может я не ясно выразился. Под Console API я понимал Console Function
о какой ограниченной области идет речь? о положении курсора? |
||||
|
|||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Я сделал обертку над WriteConsole и ReadConsole только для ограничения пользовательского ввода/вывода моего приложения. А мне еще нужно также ограничивать ввод/вывод сторонних приложений, запускаемых из моей программы. В окне есть прямоугольник, за границы которого ввод и вывод происходить не может. Иначе происходит внутренняя прокрутка (если по вертикали больше) либо перенос на новую строку (если по горизонтали). Это сообщение отредактировал(а) ИванМ - 23.11.2010, 21:30 |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |