![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Виртуальный LPT [D7, XP]
Петр © (2008-11-04 13:46:00)Добрый день мастера.
Есть отдельное приложение, которое при определённых действиях отправляет текстовую информацию (билет) на LPT порт. Можно настроить, что бы сохраняло в файл. Количество билетов неизвестно, т.е. может быть один, а может и 10. Каждый новый билет затирает, \ переписывает файл заново, причем очень быстро для человеческого глаза не заметно. Задача. Перехватить информацию, которая идет на LPT порт или в файл, добавить туда нужную строки и отправить опять на LPT. Я реализовал следующим образом, настроил приложение, что бы отправляло не на LPT, а в файл. Каждую секунду смотрю на файл, как только он обновился, я его копирую в Temp под новым именем, в конце получаю кол-во файлов соответствующее кол-ву билетов. Но данная реализация меня не очень устраивает т.к. мне не известно, сколько билетов будет и поэтому каждый раз делать задержку на 5-10 сек недопустимо. (Вдруг будет всего один билет, а система будет долго ждать). Вопрос. Можно, как ни будь создать, что то типа виртуального LPT в который будет заноситься сразу вся информация (как в принтер), а потом я уже бы смог ее обработать. Т.е. всю информацию записать в один файл, так что ли.. Вообщем, если вы меня поняли, подскажите, пожалуйста, придумать нужно за сегодня.
P.S. Настоящий профессионал который поможет мне будет премирован билетами в кино на премьерные показы….:)
sniknik (2008-11-05 14:28:00) [1]http://www.delphimaster.ru/articles/panov/index.html
sniknik (2008-11-05 14:26:00) [2]> было бы использование уведомления о изменении файлов в каталоге.
насколько помню уведомления о закрытии файла, там нет ;(, самому нужно было как то, пришлось делать проверку через какой то таймаут после изменения, т.е. изменили - взвел флаг (максимум в таймауте выставил) , а по событию кванта времени его уменьшал, как до нуля опустился - проверка монопольного открытия.
если бы было(/нашёл бы) событие закрытия, таких "наворотов" бы не понадобилось.
> хм...а с каким интервалом он проверяет?
без всяких интервалов, это событие от системы.
> а как быть в случае с этим компонентам?
это не компонент. хотя может кто уже и сделал...
поищи описание в статьях на этом сайте, автор Панов.
Петр (2008-11-05 13:16:00) [3]и еще проблема, у меня первый файл с начала работы приложения отправлять не нужно на LPT, я его сейчас отсекаю по размеру.
if (searchResult.Name=printfile) and (searchResult.Size<10000) then
а как быть в случае с этим компонентам?
Петр (2008-11-05 13:11:00) [4]
> Virgo_Style © (05.11.08 12:47) [15]
>
> imho промежуточным между правильным написанием драйвера
> и неправильным использованием таймера было бы использование
> уведомления о изменении файлов в каталоге. Достаточно просто,
> лучше таймера... но хуже драйвера, конечно. Вроде бы в
> D7 есть готовый компонентик на закладке Samples - TShellChangeNotifier
> или как-то так.
хм...а с каким интервалом он проверяет?
Virgo_Style (2008-11-05 12:47:00) [5]imho промежуточным между правильным написанием драйвера и неправильным использованием таймера было бы использование уведомления о изменении файлов в каталоге. Достаточно просто, лучше таймера... но хуже драйвера, конечно. Вроде бы в D7 есть готовый компонентик на закладке Samples - TShellChangeNotifier или как-то так.
Петр (2008-11-04 17:09:00) [6]
> sniknik © (04.11.08 17:06) [13]
>
> можно поискать драйвер принтера с перенаправлением печати
> в файл, для pdf видел, может есть и для всего сохраняющий
> as is.
я сейчас этим и занимаюсь, но что то у меня не очень получается...:(
sniknik (2008-11-04 17:06:00) [7]можно поискать драйвер принтера с перенаправлением печати в файл, для pdf видел, может есть и для всего сохраняющий as is.
Anatoly Podgoretsky (2008-11-04 16:43:00) [8]> Петр (04.11.2008 16:37:11) [11]
Не знаю, больно это ценное, чтобы выкладывать на общий доступ, Руссинович может себе позволить такую роскошь. Подобная задача измеряется в десятках килобакс.
Петр (2008-11-04 16:37:00) [9]
> Anatoly Podgoretsky © (04.11.08 16:33) [10]
>
> > Петр (04.11.2008 16:17:09) [9]
>
> Драйвер/фильтр реальное решение, в отличии от других методов.
>
может быть есть другие исходники\компоненты помимо PortMon?
Anatoly Podgoretsky (2008-11-04 16:33:00) [10]> Петр (04.11.2008 16:17:09) [9]
Драйвер/фильтр реальное решение, в отличии от других методов.
Петр (2008-11-04 16:17:00) [11]
> 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:05:00) [12]У меня еще нет, а вот Плохиш уже обзавелся.
После ухода Руссиновича и даже немного раньше - исходники были убраны, так что искать надо тех, у кого они сохранились.
Петр (2008-11-04 15:38:00) [13]
> Anatoly Podgoretsky © (04.11.08 15:26) [3]
>
> Утилиты Руссиновича, как минимум ранее, были в исходниках,
> одна из утилит называется PortMon
В исходниках не нашел...:(
Эх юмористы вы ребята...я просто хотел предложить скромную компенсацию...:)
Плохиш (2008-11-04 15:32:00) [14]Кстати, у меня уже есть кинотеатр, зачем мне какая-то москва?
Anatoly Podgoretsky (2008-11-04 15:27:00) [15]Кстати мне дешевле купить местный кинотеатр, чем до Москвы добираться.
Петр (2008-11-04 15:26:00) [16]
> Зачем мне билеты в кинотеатр какого-то Мухосранска?
Кстати, между прочим...говорим о Москве мы сейчас.
Anatoly Podgoretsky (2008-11-04 15:26:00) [17]Утилиты Руссиновича, как минимум ранее, были в исходниках, одна из утилит называется PortMon
Петр (2008-11-04 15:22:00) [18]
> > придумать нужно за сегодня
>
> Что за левый кинотеатр, в нормальных всё должно быть придумано
> "вчера".
>
> > P.S. Настоящий профессионал который поможет мне будет
> премирован
> > билетами в кино на премьерные показы
>
> Зачем мне билеты в кинотеатр какого-то Мухосранска?
Спасибо ты очень помог...:) Ребята прошу вас не писать сообщения подобного типа. Если не хотите помочь лучше игнорируйте.
Плохиш (2008-11-04 15:20:00) [19]
> придумать нужно за сегодня
Что за левый кинотеатр, в нормальных всё должно быть придумано "вчера".
> P.S. Настоящий профессионал который поможет мне будет премирован
> билетами в кино на премьерные показы
Зачем мне билеты в кинотеатр какого-то Мухосранска?