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

Вниз

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

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

Наверх




Память: 0.46 MB
Время: 0.008 c
14-46976
Василий_
2003-04-24 19:30
2003.05.15
Систем 98Win


1-46771
levova
2003-05-01 12:51
2003.05.15
TMainMenu


3-46622
Term
2003-04-23 10:17
2003.05.15
QuickReport, как сделать вертикальную надпись


1-46693
Алексей
2003-05-01 16:02
2003.05.15
Как убрать лишние теги в HTML сгенеренных Word ом?


1-46757
Xeon
2003-04-30 21:22
2003.05.15
Drag&Drop





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский