![]() |
|
![]() ![]() ![]() |
|
dbondar |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
Доброго времени суток!
Дано: программа cmd.exe к примеру, необходимо написать оболочку к ней на C++ Builder, чтобы ст.вывод выводить в Мемо, а ст.ввод брать из Edit. Написал класс, приведенный ниже (точнее переделал взятый с форума). После нажатия кнопки СТАРТ произходит запуск дочернего процесса Pipes::Start(); и запуск 1 секундного таймера, по истечению которого производится Pipes::Read; и занесение в Мемо. Также имеется Edit. При вводе в него текста производится передача его по трубе к cmd.exe (Pipes::Write("command");). Собственно проблема: при запуске приложения и при старте дочернего процесса производится занесение информации в Мемо, затем в Edit пишу ping localhost [Enter] - крастоа! Работает! Еще раз пишу ту же строку - вот теперь выводиться в Мемо надпись "Продолжить?" и все. Если еще что нибуть отправить дочернему процессу, то он закроется. Помогите найти ошибку, уважаемые коллеги. Буду всем очень благодарен! Pipes.cpp:
Pipes.hpp:
|
||||
|
|||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
WriteFile(write_stdin,buf,strlen(buf),&bread,NULL);
|
|||
|
||||
dbondar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
Сапсибо, с Вашей помощью нашел ошибку! Действительно. У меня же массив из 1024 символов!!!
![]() Вот так всегда. Зациклишься на одном месте и все тут. Возникла очередная проблема: С cmd.exe все в порядке, а вот приложение, для которого пренадназначалась оболочка работать отказывается! Дело в том, что это консольное приложение генерит свой курсор и постоянную строку вверху консоли. У меня не получается передать консоли нужные мне команды. Консольное приложение их просто игнорирует. Как быть, не подскажите? |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
узнать как именно работает с консолью управляемое приложение.
|
|||
|
||||
dbondar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
Значит обнаружилось следующее:
В обычном консольном приложении (cmd.exe) при нажатии клавиши производится немедленный вывод символа и затем автоповтор пока не отпустишь. В консольном приложении, под которое пишу оболочку несколько иначе. Нажимаешь клавишу - символ не выводится сколько бы эту клавишу не держать, а вот после отпускания он выводится на экран. Думаю, что из-за того, что в этом консольном приложении раз в секунду производится вывод информации в верхнюю строку консоли (которую я своей программой не ловлю почемуто), то и опрос клавиатуры сделан каим-то особым способом. Попутный вопрос: как можно запустить дочерний процесс (как в коде выше) так, чтобы его окно небыло скрыто, а отображалось одновременно с моей оболочкой. Это решит ряд вопросов. Спасибо. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
похоже, твое приложение работает не с stdin/stdout, а напрямую, через консольные функции. простым перенаправлением, соответственно, не отделаешься. чем "отделываться" я не подскажу - не в теме, сорри.
|
|||
|
||||
dbondar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.6.2006 Репутация: нет Всего: нет |
dumb, большое Вам спасибо. Проверьте пожалуйста почту.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |