Форум: "Прочее";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
ВнизСперли програмку Найти похожие ветки
← →
ANB © (2006-01-17 16:49) [0]Году в 97-98 купили мы в часть струйник. Выяснилось, что кириллицу он никоим образом не поддерживает, а у меня как раз весь пакет программ на клиппере был. Написал я быстренько на делфи утилитку DOSPRN, которая печатает DOS файлы, при этом понимает эпсон-коды по управлению шрифтами и сохраняет псевдографику. Потом как то выложил ее в кладовку на нашем старом сайте (еще мастак назывался и кладовка работала). Седня глянул в Яндексе - а аналог, да еще с таким же названием, вовсю продается. Еще и защита прикручена. Ессно, все переделано, но козью морду состроить охота. Вот, думаю, докрутить перехват вывода на устройство PRN и выложить керку в кладовку бесплатный вариант.
Отсюда 2 вопроса :
1. Кто знает, как перехватить вывод на LPT или PRN из DOS программ ?
2. Примет ли керк архив по почте ?
← →
Игорь Шевченко © (2006-01-17 17:06) [1]
> 1. Кто знает, как перехватить вывод на LPT или PRN из DOS
> программ ?
http://delphimaster.net/view/4-1135686570/
Найдешь - поделись со мной, если для Windows будет.
← →
ANB © (2006-01-17 17:14) [2]
> Игорь Шевченко © (17.01.06 17:06) [1]
Это не то. А ты не мог бы скачать описание DOSPRN и выслать мне его мылом ? Belousov[sob]smartcard.ru ? Я бы глянул, как они это дело обошли.
Тут задачка то перехватить из виндовой программы вывод на принтер досовской. Я то не парился - переключил вывод на файл и вызывал печаталку, досовские программы то тоже мои были.
Хотя насчет объекта ядра - это интересно. Надо бы поэксперементировать, может чего и выйдет.
← →
Игорь Шевченко © (2006-01-17 17:18) [3]
> Тут задачка то перехватить из виндовой программы вывод на
> принтер досовской
"Делается так (в NT). Пишешь DLL-ку, у нее в инициализационной части вызываешь VDDInstallIOHook с соответствующими параметрами. Обработчик, заданный как параметр этой функции, будет вызываться каждый раз, когда программа будет пытаться читать/писать что-то из/в порт(а). Дальше обрабатывай, как тебе это нравится (конечно, для этого ты должен знать описание формата выводимых данных. Тут уже ничем помочь не могу). Когда DLL-ку соберутся выгружать, снова вызовется инициализационная часть, и ты тогда должен выполнить VDDDeInstallIOHook.
После того, как все сделал, прописываешь свою DLL-ку в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Controls\VirtualDeviceDrivers. Тебе необходимо создать (или изменить) ключ VDD таким образом:
VDD=<путь_к_твоей_DLL_ке>\0<предыдущее значение_ключа> (это если ключ был), или
VDD=<путь_к_твоей_DLL_ке>\0\0 (если его не было).
Вкратце это все. Я этим не занимался сам, так что ничего не гарантирую. For more information look in MSDN (DDK Documentation\Windows NT 4.0 DDK\Virtual DOS drivers\Writing a VDD), как ни банально это звучит. Там же найдешь описание параметров всех функций."
← →
ANB © (2006-01-17 17:28) [4]
> Игорь Шевченко © (17.01.06 17:18) [3]
Спасибо.
← →
Sapersky (2006-01-19 20:10) [5]Вариант для Win9x:
Берётся драйвер redirect.vxd от DOSPRN, помещается в Windows\System, и делается следующее:
Const
ofnb : array[0..11] of Byte = (1,10,99,58,92,112,114,110,115,112,108,0);
p:=AllocMem($141);
fh:=CreateFile(PChar("\\.\"+SysDir+"\redirect.vxd"),0,0,nil,1,$4000000,0);
If fh=0 then RaiseLastWin32Error;
If not DeviceIoControl(fh,1,p,$141,p,$141,br,nil) then RaiseLastWin32Error;
If not DeviceIoControl(fh,2,p,$141,p,$141,br,nil) then RaiseLastWin32Error;
CopyMemory(p,@ofnb,12);
If not DeviceIoControl(fh,2,P,$141,P,$141,br,nil) then RaiseLastWin32Error;
If p<>nil then FreeMem(p);
При завершении работы CloseHandle(fh);
Не уверен, что все из этих шаманских пассов обязательны, но так уж написал 4 года назад, и оно работало :)
Перехваченные данные помещаются в с:\prnspl (ofnb фактически и есть имя файла).
← →
Torry © (2006-01-20 00:04) [6]>1. Кто знает, как перехватить вывод на LPT или PRN из DOS программ ?
Сам это делал, в 1990-ом году. Написал аналогичную программу для лазерных принтеров, "Greenfield Laser Jet Utility". В ее составе и был "перехватчик" LPT и PRN. Но вот не уверен, что найду где-нибудь.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c