Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Чтение с консоли   Найти похожие ветки 

 
Steplerr ©   (2006-05-29 16:01) [0]

Три дня уже бъюсь над такой делемой - как из своей программы прочитать текст выведенный на консоль ДРУГОЙ КОНСОЛЬНОЙ программы.
Максимум, чего удалось добиться - получить хэндлер (ConsoleWindowClass) и через SendMessage (и WM_SETTEXT) вывести в его заголовок текст, а как считать то текст с самой консоли!!!
Помогите плиз!!!

З.Ы. Вариант типа proga.exe > file.txt - не подойдёт!!!


 
TUser ©   (2006-05-29 16:10) [1]

Надо создать PIPE и читать через него. Подробности есть в Яндексе.


 
Desdechado ©   (2006-05-29 16:11) [2]

> Вариант типа proga.exe > file.txt - не подойдёт
почему?
а вариант proga1.exe | proga2.exe
?


 
Steplerr ©   (2006-05-29 16:26) [3]

Мне нужно обработать в определённый момент вывод консольной псевдографичесокой программы, а до этого момента нужно что-бы пользователь работал с ней как обычно.


 
Eraser ©   (2006-05-29 16:36) [4]

http://www.torry.net/quicksearchd.php?String=console&Title=Yes
"How to capture console application output"
"Redirect Console"


 
Steplerr ©   (2006-05-29 17:44) [5]

Спасибо за ссылку, много интересного узнал. Но чего-то я не соображу как организовать такую штуку:
Человек сидит и нормально работает с программой и в определённый момент запускает мою прогу, которая считывает кусочек текста с консоли выполняет кое-какую работу и благополучно закрывается, а консольная программа продолжает работать дальше.

З.Ы. Ещё раз спасибо Eraser за ссылку.


 
Steplerr ©   (2006-05-29 17:59) [6]

В хелпах нашёл раздел Console Functions с богатым ассортиментом (AllocConsole, CreateConsoleScreenBuffer,...,ReadConsole,...), актуальны ли они при работе с чужой консолью?


 
Eraser ©   (2006-05-29 18:29) [7]


> Steplerr ©

кроме как указать свои дескрипторы в STARTUPINFO я другово способа не зна, но возможно такой способ есть, и даже не хакерский.


 
Leonid Troyanovsky ©   (2006-05-29 22:20) [8]


> Eraser ©   (29.05.06 18:29) [7]

> кроме как указать свои дескрипторы в STARTUPINFO я другово
> способа не зна, но


Если запускающий создает процесс в своей консоле, то
возможности ширее.

--
Regards, LVT.


 
Юрий Зотов ©   (2006-05-30 03:22) [9]

Запускаем свою программу, та создает консоль и в ней запускает чужую, делая дескрипторы стандартного ввода-вывода наследуемыми - а в итоге получает доступ к буферам ввода-вывода чужой программы.


 
Leonid Troyanovsky ©   (2006-05-30 05:25) [10]


> Юрий Зотов ©   (30.05.06 03:22) [9]

> чужую, делая дескрипторы стандартного ввода-вывода наследуемыми


AFAIK, для консоли нельзя.

--
Regards, LVT.


 
Юрий Зотов ©   (2006-05-30 18:20) [11]

> Leonid Troyanovsky ©   (30.05.06 05:25) [10]

Можно, я делал. Насколько помню, там в StartupInfo есть флаг соответствующий, в параметрах CreateProcess тоже на эту тему что-то есть.


 
Leonid Troyanovsky ©   (2006-05-30 19:49) [12]


> Юрий Зотов ©   (30.05.06 18:20) [11]

> Можно, я делал. Насколько помню, там в StartupInfo есть
> флаг соответствующий, в


Скорее всего, делал ты это обычным способом - через пайп,
который чужим процессом наследуется.
Потому, как наследованию хендлов самой консоли препятствует MS:

Console input The handle is returned by the CreateFile function when CONIN$ is specified, or by the GetStdHandle function when STD_INPUT_HANDLE is specified. Console handles can be duplicated for use only in the same process.

Console screen buffer The handle is returned by the CreateFile function when CONOUT$ is specified, or by the GetStdHandle function when STD_OUTPUT_HANDLE is specified. Console handles can be duplicated for use only in the same process.

В [8] я имел ввиду несколько другое.
Когда чужой процесс запускается в своей консоли появляются
некоторые дополнительные возможности с ним взаимодействовать.
Т.е., чужой процесс даже может поверить, что это не подсунутый ему
пайп, а настоящая консоль (при переопределении стандартных ввд/выв).

--
Regards, LVT.


 
vertal ©   (2006-05-30 22:35) [13]

http://kladovka.net.ru/index.cgi?pid=board&rid=30



Страницы: 1 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
15-1150028559
wp2
2006-06-11 16:22
2006.07.09
Как распечатать книгу?


2-1150790849
zdm
2006-06-20 12:07
2006.07.09
глупый вопрос


6-1132640622
Дмитрий_05
2005-11-22 09:23
2006.07.09
Снифер HTTP-запросов


15-1149749393
mctarik
2006-06-08 10:49
2006.07.09
Привет Всем! Теперь и у меня Локальная сеть ;)


2-1150534664
Borisss
2006-06-17 12:57
2006.07.09
Как высчитать arccos(x)?