Форум: "Основная";
Текущий архив: 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