Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
2-1150989669
DevilDevil
2006-06-22 19:21
2006.07.09
Перехват Клавиатурного Перехватчика


8-1138694172
Sour Smile
2006-01-31 10:56
2006.07.09
Как наложить 32-х битный bitmap-спрайт?


6-1141307342
wezzz
2006-03-02 16:49
2006.07.09
как получить сетевое имя файла?


2-1151053682
elfebet
2006-06-23 13:08
2006.07.09
Не пойму ошибку и как выйти из ситуации.


2-1150648613
mctarik
2006-06-18 20:36
2006.07.09
Почему ничего не происходит при выполнении данного кода ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский