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

Вниз

Как поймать сообщения консоли?   Найти похожие ветки 

 
.::D.e.M.o.N.i.X::. ©   (2003-05-04 05:40) [0]

Как из своей программы поймать сообщения консольной программы?
Чтобы было понятно : Из своей программы запускаю другую программу с ключами и по ходу её работы вывожу все её сообщения.


 
MBo ©   (2003-05-04 08:23) [1]

CreateProcess
перенаправление hStdOutput в pipe
CreatePipe


 
ST ©   (2003-05-04 10:40) [2]

Если проще, то можно создать bat файл и вызывать его, а в нём написать что-то типа my_program.exe > my_program.log


 
Song ©   (2003-05-04 11:11) [3]

2MBo © (04.05.03 08:23)
Не все пайпятся :(


 
MBo ©   (2003-05-04 11:22) [4]

>Song
не всЕ дочерние или не всЁ из них?


 
Song ©   (2003-05-04 11:24) [5]

Вообще информация не передаётся в некоторых прогах.
ReadPipe() ничего не возвращает и висит.


 
MBo ©   (2003-05-04 11:29) [6]

А причины известны? Что, консольный вывод не в hStdOutPut идет?

DosCommand не пробовал на такие злобные программы натравить?


 
Song ©   (2003-05-04 11:33) [7]

Консольный вывод идёт во WritePipe...
Вообщем исходник в http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1023371413;start=14, сообщение #14
С этой прогой ping идёт. А вот недавно arj пробовал - не пашет.


 
Song ©   (2003-05-04 11:34) [8]

А что за DosCommand ?


 
MBo ©   (2003-05-04 11:46) [9]

master-brain.boom.ru

проверил - аналогично, вывод arj тоже не ловится ;(


 
Юрий Зотов ©   (2003-05-04 12:28) [10]

Можно предположить, что не перенаправляются DOS-программы, которые для вывода используют не нормальные функции BIOS/DOS, а прямую запись в видеопамять. Такие встречались нередко и родными средствами DOS они тоже не перенаправлялись (естественно, для этого же надо что-то перехватывать, а перехватывать получается нечего).

Каким образом такой "прямой" вывод обрабатывает пресловутая виртуальная машина - одному Майкрософту известно (вероятно, эмулирует видеопамять?), но не исключено, что он действительно идет мимо StdOutput. Тогда и получается, что формально все верно, ошибок в нашей программе нет, но в канал просто ничего не пишется и ReadPipe ждет вхолостую.


 
Набережных С.   (2003-05-04 15:39) [11]

У консоли может быть несколько экранных буферов, созданных с помощью CreateConsoleScreenBuffer, отображаемый на экране выбирается SetConsoleActiveScreenBuffer. Выводить приложение может в любой из них. Если этим воспользоваться, то в переданный пайп естественно ничего не попадет.



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
3-46563
Anton.
2003-04-23 09:18
2003.05.15
Смена даты после оракловой ошибки


1-46679
DREMcas_x
2003-04-30 13:53
2003.05.15
Пример цикла


1-46718
Киря
2003-05-04 17:01
2003.05.15
Удаления дубликатов в ListBox


14-46945
Хороший человек
2003-04-21 20:51
2003.05.15
Посоветуйте, какой ник выбрать


3-46631
sapsi
2003-04-23 13:39
2003.05.15
Не показывать в гриде определенные записи