Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Внизперехват вывода в файл Найти похожие ветки
← →
Joseph (2002-06-27 09:52) [0]Вопрос в следующем: DOS-овская программа выводит строки в файл, имя которого известно. Как перехватить этот вывод, т.е. получать эти строки в свое приложение по мере их формирования и без записи в файл.
← →
Fellomena (2002-06-27 12:17) [1]переопределяй стандартный stdout и от этого рули...
← →
Юрий Зотов (2002-06-27 16:32) [2]> программа выводит строки в файл
> переопределяй стандартный stdout
Fellomena, ай-яй-яй. Разве файл - это стандартный stdout? Ничего не даст такое переопределение.
Конечно, хорошо бы переопределить вывод, но, боюсь, с файлом это не получится (по крайней мере, в мою голову ничего полезного на эту тему с ходу не приходит, может кто другой сообразит).
Попробуйте FindFirst(Next..)ChangeNotification. Не обязательно, но может получиться - все зависит от того, КАК именно программа пишет. Самой записи избежать не удастся, но уведомление о ней Вы все же получите.
На самый худой конец остается самый тупой способ - периодически проверять длину файла и считывать с него добавившийся кусок. Но это - в последнюю очередь.
← →
Fellomena (2002-07-01 11:41) [3]2 Юрий Зотов © (27.06.02 16:32):
...мда, мозги у меня на югах расплавились imho
Есественно, файл - это не stdout 8(
SORRY.
(вот из-за таких ламеров, как я, умные люди в заблуждение вводятся 8(
А что, если открыть своей программой этот файл с эксклюзивными провами и каким-нибудь образом перехватывать то, что в него пробует записать другая программа?
хм... но в таком случае в той программе будет возникать ошибка доступа к ресурсу... интерестно, а можно её перехватить как-нибудь... наверное нет, это тебе не WH_KEYBOARD, хотя что-нибудь попридумывать можно наверняка...
← →
paul_shmakov (2002-07-01 14:59) [4]а программа точно досовская? может консольная win32?
была бы она консольной win32 можно применить перезват api.
(вот, кстaти, пример использования перехвата api в мирных целях, а то все говорят вирусы-трояны :)
перехватить CreateFile, WriteFile.
← →
SV (2002-07-05 02:34) [5]Наглый вариант - править саму DOS- программу.
← →
ggrisha (2002-07-05 09:27) [6]Если в консоле нужно перехватывать winapi, то в DOSе нужно перехватывать int 21h.
← →
Shaman_Naydak (2002-07-05 12:20) [7]Если программа досовская и винды 95/98, то можно попробовать применить технику обычного доса - перехватить 21h соответствующие ф-ции и в путь..
НО.. может и не сработать, если винды не вернут управление досовскому обработчику 21h (этим сильно грешили 3.11 винды, но в 95 это дело поправили).. в любом случае есть какие-то настройки, позволяющие это сделать однозначно..
Подробно этот вопрос описывается в книге Эндрю Шульмана "Неофициальная Windows"95"
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c