2008-11-03 4 views
20

Я ищу для создания виртуального принтера, который передает данные в мое приложение .NET. Затем я хочу создать установщик, который устанавливает как принтер, так и приложение .NET. Было бы здорово, что мы могли бы написать все на C#, но у меня такое ощущение, что для этого потребуется драйвер принтера, который будет неуправляемым. Кто-нибудь знает довольно чистый учебник или пример того, как это сделать?Написание виртуального принтера в .NET

ответ

7

Я думаю, вам нужно будет сделать много упаковки WinAPI. Начните исследование по телефону Windows Driver Development Kit, чтобы найти то, что вам нужно сделать.

Я также нашел, что это коммерческий Printer Driver Resource Toolkit для .NET ...

0

Вы не можете. Windows driver model является родным.

+3

Он не может что именно? «Создайте установщик, который устанавливает виртуальный принтер и приложение .NET?» Конечно, он может написать все в C#. Зависит от вашего определения «все» и «на C#». – bzlm 2009-02-19 09:24:22

+1

Да, он может, все, что ему нужно сделать, это перенаправить данные в CREATED dummy print driver или SELECTED, в его приложение. Также может быть сделано с использованием C#. – Zerone 2011-02-07 17:28:44

0

Почему бы не рассмотреть альтернативный подход. Подобно использованию промежуточной готовой программы печати, такой как свободно распространяемое приложение Print-to-PDF. Тогда вам нужно только расшифровать PDF, используя некоторую стороннюю библиотеку (у которой также есть свободная и открытая дисперсия), вместо того, чтобы взломать голову, чтобы изобрести колесо. Есть другое приложение Print-to-XXX, которое вы также можете рассмотреть в зависимости от формата, который вам подходит.

1

Я тоже не понимаю, как интерпретировать PDF-подход. Я не знаю, почему вы хотите делать то, что хотите. Возможно, вы пытаетесь написать собственный PDF-принтер.

Я думаю, вы действительно должны взглянуть на Windows Driver Development. Если вы хотите разработать драйвер принтера, я думаю, вам нужно будет сделать это на C++.

Удачи.

5

Вы можете просто показать свое приложение как принтер типа LPD или порт монитора 9100. Затем вы можете установить любой подходящий драйвер печати и указать его в своем приложении.

+1

Хорошая идея. Но как насчет разбора «LPD» данные "или что-то еще через порт? – bzlm 2009-02-19 09:23:00

0

Если я правильно помню, Microsoft не поддерживает .NET в рамках разработки драйверов принтера. Мне еще не удалось найти чистый драйвер принтера .NET. Вы будете очень смелым человеком, чтобы сделать это! На веб-сайте «Инструментарий ресурсов драйвера принтера» не указано, что драйвер был написан в .NET.

19

Посетить http://www.printerplusplus.com. Это виртуальный принтер .NET с открытым исходным кодом. Он предоставляет установщик и класс .NET для написания кода для обработки ваших «данных принтера».

1

ли именно то, что вы просите, используя проект GitHub: Microsoft/Windows-драйвер-образцы/печать/XPSDrvSmpl

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl

Installer: http://wixtoolset.org/

Применение: Слушайте внутренний порт

Поток: установите принтер и приложение из одного установщика. Пользователь печатает что-то с вашим драйвером, и при этом приложение прослушивает внутренний порт. Когда данные отправляются, приложение выбирает их. Это для XPS, может быть преобразовано в PDF, но поток аналогичен независимо от того, что вы печатаете.Если вам нужно что-нибудь еще, проверьте Microsoft/Windows-driver-samples/print/on GitHub или другие источники, соответствующие вашим потребностям.

Update:

много вопросов о том, как получить драйвер работает так вот быстрый пример:

Начало загрузив набора Windows Driver Kit (WDK), если вы не установили уже. При установке выберите добавление расширения для Visual Studio, а также на последнем этапе. В вашей установке Visual Studio 2017 вам необходимо иметь Desktop development with C++, чтобы иметь нужные SDK. Если у вас его нет, см. Ансер ниже о том, как его добавить.

How do I add features to Visual Studio 2017?

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

Затем загрузите файл .zip для мастера Windows-драйвера-образцы:

https://github.com/Microsoft/Windows-driver-samples/archive/master.zip

Перейдите в папку <UnzipFolder>\print\XPSDrvSmpl и открытой XPSDrvSmpl.sln в Visual Studio.

Затем следуйте руководству Microsoft по GitHub. Как вы можете видеть, это для Visual Studio 2015, но я думаю, что это точно так же для 2017 (еще не проверено):

Чтобы создать решение драйвера с помощью набора драйверов Windows (WDK) 10 и Visual Studio 2015, выполните следующие шаги.

  1. Открыть файл решения в Visual Studio 2015.
  2. Добавить все недвоичных файлы (как правило, находится в \ директории установки образца) к проекту пакета: а. В обозревателе решений щелкните правой кнопкой мыши Файлы драйверов b. Выберите «Добавить», затем «Существующий элемент». Перейдите к местоположению, в которое вы загрузили образец, и выберите все файлы в каталоге установки или эквивалентный набор не двоичных файлов, таких как INF, INI, GPD, PPD-файлы и т. Д. D. Нажмите Добавить
  3. Настройте эти файлы для добавления в пакет драйвера: a. В обозревателе решений щелкните правой кнопкой мыши по решению и выберите «Добавить»> «Создать»> « ». Выберите Пакет установки драйвера в Visual C++/Windows Драйвер/Пакет. б. В обозревателе решений щелкните правой кнопкой мыши проект Package и выберите «Свойства». с. На левой панели щелкните Свойства конфигурации> Установить драйвер> Файлы пакетов. д. На правой панели используйте кнопку многоточия (...), чтобы перейти к набору файлов , которые необходимо добавить в пакет драйверов. Все данные файлы, добавленные вами на шаге 2-c, за исключением INF-файла, должны быть добавлены . Эта конфигурация является для каждой архитектуры, поэтому эта конфигурация должна быть повторена для каждой архитектуры, которая будет построена. е. Нажмите ОК.
  4. Откройте файл INF и отредактируйте его в соответствии с построенным выходом. а. Откройте файл INFO . б. В разделе «Версия» добавьте ссылку на каталог файл следующим образом: CatalogFile = XpsDrvSmpl.cat. с. В разделе SourceDisksFiles измените расположение файлов DLL, которые вы создаете , до = 1.Это указывает на то, что в этом драйвере отсутствует конкретная директория . Если вы одновременно отправляете несколько архитектур , вам необходимо вручную сопоставить драйвер INF.

На данный момент Visual Studio 2015 сможет построить пакет драйверов и вывести файлы на диск. Чтобы настроить подпись и развертывание драйверов, см. Раздел «Разработка, тестирование и развертывание драйверов».

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample