Как создать собственный драйвер принтера XP - PullRequest
12 голосов
/ 18 июня 2010

Как мне создать свой собственный драйвер принтера XP, который будет делать следующее:

  • печать в файл (возможно, в формате XPS)
  • поместить этот файл в ZIP-файл, защищенный паролем
  • отправка почтового файла на настроенный адрес электронной почты

Ответы [ 4 ]

18 голосов
/ 23 июня 2010

Что вам нужно, это не драйвер принтера. Один назвал его Print Monitor . Это DLL, которая будет загружена в процесс Spooler.exe. DLL дает Spooler на этапе инициализации логические имена портов, таких как LPT1:, FILE:, SPSPort: и т. Д. Оптпут, подготовленный с помощью драйвера принтера, должен быть любым способом отправлен на целевое устройство. Эта работа позволяет печатать мониторы типа «Стандартный порт TCP / IP» или «Локальный порт».

Для написания монитора принтера вам необходимо скачать и установить комплект драйверов Windows (WDK или некоторое время назад DDK см. http://www.microsoft.com/whdc/devtools/WDK/default.mspx). Подробнее о написании монитора принтера см. http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx. Print Monitor - это DLL с некоторыми экспортированными функция (см. http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx).. Рекомендую начать с модификации локального монитора, например, LocalMon, полный исходный код которого вы найдете после установки WDK (см. http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).

Наиболее практичной проблемой при написании монитора принтера является требование написания настоящей многопоточной DLL. Вы должны быть очень осторожны, понимать и использовать EnterCriticalSection во всех своих функциях. Для отладки монитора принтера необходимо подключить отладчик Visual Studio к процессу Spooler. Остальное аналогично написанию стандартной Windows Win32 / Win64 DLL.

ОБНОВЛЕНО : еще одно небольшое замечание. Если вы не хотите, чтобы драйвер принтера что-либо делал с данными, отправленными на принтер, вы можете использовать универсальный драйвер принтера. Вы найдете его в разделе «Универсальный», принтер с названием «Универсальный / только текст». Изучите некоторые настройки драйвера, которые у вас есть (например, настройки CR LF)

3 голосов
/ 18 июня 2010

Хотя я не могу дать какой-либо конкретный совет, если бы я хотел сделать то, что вы описываете, первое, что я хотел бы сделать, это прочитать исходный код PDFCreator - это драйвер печати Windows, который может плюнуть из PDF.

2 голосов
/ 25 июня 2010

Объедините эти программы, сначала cpri (для доступа через ваш код к устройству принтера)

Это на языке C

http://sourceforge.net/projects/cpri/

, затем вы можете использовать

http://sourceforge.net/projects/pdfcreator

, чтобы получить виртуальный принтер для генерации вывода в формате pdf, xps

0 голосов
/ 17 февраля 2011

Я нашел хорошее прохождение во время охоты на то же самое:

«Создание виртуального принтера Postscript в Windows с помощью Ghostscript»

http://www.stat.tamu.edu/~henrik/GSPSprinter/GSPSprinter.html

Устройства вывода, поддерживаемые ghostscript, находятся здесь: http://pages.cs.wisc.edu/~ghost/doc/cvs/Devices.htm (PDF, Postscript, PNG и т. Д.).

Example of redirecting printer to a program - using tutorial

...