Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.007 c
6-14207
cypher
2002-06-26 00:06
2002.09.05
Сетевые диски


14-14238
BAHO
2002-08-08 02:07
2002.09.05
Прокси сервер в Delphi6 на Indy


14-14245
jonik pegas
2002-08-08 12:14
2002.09.05
А что вообще есть .NET?


1-14142
Yaro
2002-08-23 23:24
2002.09.05
Писать в любую часть файла


3-13920
Reticent
2002-08-14 12:40
2002.09.05
SQL to ORACLE





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