Как я могу установить принтер, используя .NET? - PullRequest
5 голосов
/ 04 мая 2009

У меня есть .INF для виртуального принтера, который мне нужно установить из приложения .NET. Я сделал это перед использованием пакетных сценариев, но я ищу фрагмент кода для этого в .NET Framework.

В принтере .INF нет ничего особенного, поэтому любой код, который устанавливает принтер из INF в C # или VB.NET, будет работать.

Ответы [ 6 ]

9 голосов
/ 04 мая 2009

Я полагаю, что это возможно через взаимодействие с собственными Win32 API, но я обнаружил, что намного проще использовать System.Diagnostics.Process () для вызова printui.dll через:

rundll32.exe printui.dll,PrintUIEntry /?

Возможно, вы уже используете это в упомянутом пакетном скрипте, но если нет, то параметры задокументированы здесь: Руководство пользователя PrintUI.DLL и справочник

Обязательно протестируйте его на всех операционных системах, которые вам необходимо поддерживать. Некоторые параметры либо отсутствуют во всех выпусках Windows, либо были переименованы (хотя я думаю, что они являются более эзотерическими вариантами - установка .INF, вероятно, будет работать по всем направлениям).

5 голосов
/ 04 мая 2009

Вы хотите посмотреть на доступные объекты WMI. Это обеспечивает более точное управление настройками локального компьютера. Взгляните на WMI-создатель кода от Microsoft. Я полагаю, что это создаст пример кода, который вы можете использовать для решения вашей проблемы.

2 голосов
/ 04 мая 2009

Управление настройками принтера в C # для гибкой печати

см. Эту статью, она использует библиотеку MS Platform SDK, которая называется PRNADMIN, для управления принтерами, драйверами принтера, портами принтера и т. Д.

Я лично использую его в коммерческом проекте для установки драйвера принтера и изменения порта принтера на локальный порт для перехвата PostScript. и это работает как Шарм.

В качестве альтернативы вы можете использовать некоторые предустановленные скрипты VBS, которые поставляются с окнами в C: \ Windows \ system32 \ Printing_Admin_Scripts, и вот статья для них:

http://technet.microsoft.com/en-us/library/cc771846.aspx

1 голос
/ 04 мая 2009

Это не идеальное решение, но если никто не ответит, вы можете создать временный пакетный файл и вызвать его через C # / VB.NET.

Кто-то, вероятно, будет знать более естественный способ сделать это.

0 голосов
/ 04 мая 2009

Я всегда возвращаюсь по следующим ссылкам для установки принтеров «программно».

http://support.microsoft.com/kb/314486

http://www.robvanderwoude.com/2kprintcontrol.php

0 голосов
/ 04 мая 2009

Вам нужно будет обернуть настройки API, используя PINVOKE или собственный COM-объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...