Форум: "Начинающим";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];
ВнизВиртуальный LPT Найти похожие ветки
← →
Петр (2008-11-04 13:46) [0]Добрый день мастера.
Есть отдельное приложение, которое при определённых действиях отправляет текстовую информацию (билет) на LPT порт. Можно настроить, что бы сохраняло в файл. Количество билетов неизвестно, т.е. может быть один, а может и 10. Каждый новый билет затирает, \ переписывает файл заново, причем очень быстро для человеческого глаза не заметно. Задача. Перехватить информацию, которая идет на LPT порт или в файл, добавить туда нужную строки и отправить опять на LPT. Я реализовал следующим образом, настроил приложение, что бы отправляло не на LPT, а в файл. Каждую секунду смотрю на файл, как только он обновился, я его копирую в Temp под новым именем, в конце получаю кол-во файлов соответствующее кол-ву билетов. Но данная реализация меня не очень устраивает т.к. мне не известно, сколько билетов будет и поэтому каждый раз делать задержку на 5-10 сек недопустимо. (Вдруг будет всего один билет, а система будет долго ждать). Вопрос. Можно, как ни будь создать, что то типа виртуального LPT в который будет заноситься сразу вся информация (как в принтер), а потом я уже бы смог ее обработать. Т.е. всю информацию записать в один файл, так что ли.. Вообщем, если вы меня поняли, подскажите, пожалуйста, придумать нужно за сегодня.
P.S. Настоящий профессионал который поможет мне будет премирован билетами в кино на премьерные показы….:)
← →
Плохиш © (2008-11-04 15:20) [1]
> придумать нужно за сегодня
Что за левый кинотеатр, в нормальных всё должно быть придумано "вчера".
> P.S. Настоящий профессионал который поможет мне будет премирован
> билетами в кино на премьерные показы
Зачем мне билеты в кинотеатр какого-то Мухосранска?
← →
Петр (2008-11-04 15:22) [2]
> > придумать нужно за сегодня
>
> Что за левый кинотеатр, в нормальных всё должно быть придумано
> "вчера".
>
> > P.S. Настоящий профессионал который поможет мне будет
> премирован
> > билетами в кино на премьерные показы
>
> Зачем мне билеты в кинотеатр какого-то Мухосранска?
Спасибо ты очень помог...:) Ребята прошу вас не писать сообщения подобного типа. Если не хотите помочь лучше игнорируйте.
← →
Anatoly Podgoretsky © (2008-11-04 15:26) [3]Утилиты Руссиновича, как минимум ранее, были в исходниках, одна из утилит называется PortMon
← →
Петр (2008-11-04 15:26) [4]
> Зачем мне билеты в кинотеатр какого-то Мухосранска?
Кстати, между прочим...говорим о Москве мы сейчас.
← →
Anatoly Podgoretsky © (2008-11-04 15:27) [5]Кстати мне дешевле купить местный кинотеатр, чем до Москвы добираться.
← →
Плохиш © (2008-11-04 15:32) [6]Кстати, у меня уже есть кинотеатр, зачем мне какая-то москва?
← →
Петр (2008-11-04 15:38) [7]
> Anatoly Podgoretsky © (04.11.08 15:26) [3]
>
> Утилиты Руссиновича, как минимум ранее, были в исходниках,
> одна из утилит называется PortMon
В исходниках не нашел...:(
Эх юмористы вы ребята...я просто хотел предложить скромную компенсацию...:)
← →
Anatoly Podgoretsky © (2008-11-04 16:05) [8]У меня еще нет, а вот Плохиш уже обзавелся.
После ухода Руссиновича и даже немного раньше - исходники были убраны, так что искать надо тех, у кого они сохранились.
← →
Петр (2008-11-04 16:17) [9]
> Anatoly Podgoretsky © (04.11.08 16:05) [8]
>
> У меня еще нет, а вот Плохиш уже обзавелся.
> После ухода Руссиновича и даже немного раньше - исходники
> были убраны, так что искать надо тех, у кого они сохранились.
>
Анатолий, а есть ещё какие нибудь варианты? может как то запретить приложению перезаписывать файл??? или как то быстро очень анализировать его?? сейчас я делаю это так
if FindFirst(extractfilepath(Application.ExeName)+printfile, faAnyFile, searchResult) = 0 then
begin
repeat
if (searchResult.Name=printfile) and (searchResult.Size<10000) then
begin
CopyFile(pchar(extractfilepath(Application.ExeName)+searchResult.Name),pchar(extractfilepath(Application.ExeName)+"\malina\"+inttostr(random(100))+".txt"),true);
deletefile(pchar(extractfilepath(Application.ExeName)+searchResult.Name));
end;
until FindNext(searchResult) <> 0;
Просто не могу придумать что еще можно сделать?!
← →
Anatoly Podgoretsky © (2008-11-04 16:33) [10]> Петр (04.11.2008 16:17:09) [9]
Драйвер/фильтр реальное решение, в отличии от других методов.
← →
Петр (2008-11-04 16:37) [11]
> Anatoly Podgoretsky © (04.11.08 16:33) [10]
>
> > Петр (04.11.2008 16:17:09) [9]
>
> Драйвер/фильтр реальное решение, в отличии от других методов.
>
может быть есть другие исходники\компоненты помимо PortMon?
← →
Anatoly Podgoretsky © (2008-11-04 16:43) [12]> Петр (04.11.2008 16:37:11) [11]
Не знаю, больно это ценное, чтобы выкладывать на общий доступ, Руссинович может себе позволить такую роскошь. Подобная задача измеряется в десятках килобакс.
← →
sniknik © (2008-11-04 17:06) [13]можно поискать драйвер принтера с перенаправлением печати в файл, для pdf видел, может есть и для всего сохраняющий as is.
← →
Петр (2008-11-04 17:09) [14]
> sniknik © (04.11.08 17:06) [13]
>
> можно поискать драйвер принтера с перенаправлением печати
> в файл, для pdf видел, может есть и для всего сохраняющий
> as is.
я сейчас этим и занимаюсь, но что то у меня не очень получается...:(
← →
Virgo_Style © (2008-11-05 12:47) [15]imho промежуточным между правильным написанием драйвера и неправильным использованием таймера было бы использование уведомления о изменении файлов в каталоге. Достаточно просто, лучше таймера... но хуже драйвера, конечно. Вроде бы в D7 есть готовый компонентик на закладке Samples - TShellChangeNotifier или как-то так.
← →
Петр (2008-11-05 13:11) [16]
> Virgo_Style © (05.11.08 12:47) [15]
>
> imho промежуточным между правильным написанием драйвера
> и неправильным использованием таймера было бы использование
> уведомления о изменении файлов в каталоге. Достаточно просто,
> лучше таймера... но хуже драйвера, конечно. Вроде бы в
> D7 есть готовый компонентик на закладке Samples - TShellChangeNotifier
> или как-то так.
хм...а с каким интервалом он проверяет?
← →
Петр (2008-11-05 13:16) [17]и еще проблема, у меня первый файл с начала работы приложения отправлять не нужно на LPT, я его сейчас отсекаю по размеру.
if (searchResult.Name=printfile) and (searchResult.Size<10000) then
а как быть в случае с этим компонентам?
← →
sniknik © (2008-11-05 14:26) [18]> было бы использование уведомления о изменении файлов в каталоге.
насколько помню уведомления о закрытии файла, там нет ;(, самому нужно было как то, пришлось делать проверку через какой то таймаут после изменения, т.е. изменили - взвел флаг (максимум в таймауте выставил) , а по событию кванта времени его уменьшал, как до нуля опустился - проверка монопольного открытия.
если бы было(/нашёл бы) событие закрытия, таких "наворотов" бы не понадобилось.
> хм...а с каким интервалом он проверяет?
без всяких интервалов, это событие от системы.
> а как быть в случае с этим компонентам?
это не компонент. хотя может кто уже и сделал...
поищи описание в статьях на этом сайте, автор Панов.
← →
sniknik © (2008-11-05 14:28) [19]http://www.delphimaster.ru/articles/panov/index.html
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c