Show / Hide Table of Contents

Практическое руководство. Клонирование принтера

Большинство компаний рано или поздно купит нескольких принтеров той же модели. Как правило они все устанавливаются с практически одинаковыми параметрами. Установка каждого принтера может занимать много времени и подвержено ошибкам. System.Printing.IndexedProperties Пространства имен и InstallPrintQueue класс, который предоставляется через Microsoft .NET Framework дает возможность мгновенно установить любое число дополнительных очередей печати, которые копируются из существующей очереди печати.

Пример

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

  1. Создание PrintQueue объект для существующего принтера, который нужно клонировать.

  2. Создание PrintPropertyDictionary из PropertiesCollection из PrintQueue. Value Каждой записи в этом словаре является объектом одного из типов, производных от PrintProperty. Существует два способа установки значения объекта, содержащегося в данном словаре.

    • Использование словаря удалить и Add методов, чтобы удалить запись, а затем добавьте его повторно с требуемым значением.

    • Использование словаря SetProperty метод.

    В приведенном ниже примере показаны оба способа.

  3. Создание PrintBooleanProperty и задайте его Name для «IsShared» и его Value для true.

  4. Используйте PrintBooleanProperty объект значение PrintPropertyDictionaryв записи «IsShared».

  5. Создание PrintStringProperty и задайте его Name для «ShareName» и его Value — соответствующую String.

  6. Используйте PrintStringProperty объект значение PrintPropertyDictionaryв записи «Ресурс».

  7. Создайте другой PrintStringProperty и задайте его Name «Расположение» и его Value — соответствующую String.

  8. Используйте второй PrintStringProperty объект значение PrintPropertyDictionaryв записи «Местоположение».

  9. Создайте массив Strings. Каждый элемент является имя порта на сервере.

  10. Используйте InstallPrintQueue для установки нового принтера с новыми значениями.

Пример приведен ниже.

LocalPrintServer myLocalPrintServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
PrintQueue sourcePrintQueue = myLocalPrintServer.DefaultPrintQueue;
PrintPropertyDictionary myPrintProperties = sourcePrintQueue.PropertiesCollection;

// Share the new printer using Remove/Add methods
PrintBooleanProperty shared = new PrintBooleanProperty("IsShared", true);
myPrintProperties.Remove("IsShared");
myPrintProperties.Add("IsShared", shared);

// Give the new printer its share name using SetProperty method
PrintStringProperty theShareName = new PrintStringProperty("ShareName", "\"Son of " + sourcePrintQueue.Name +"\"");
myPrintProperties.SetProperty("ShareName", theShareName);

// Specify the physical location of the new printer using Remove/Add methods
PrintStringProperty theLocation = new PrintStringProperty("Location", "the supply room");
myPrintProperties.Remove("Location");
myPrintProperties.Add("Location", theLocation);

// Specify the port for the new printer
String[] port = new String[] { "COM1:" };

// Install the new printer on the local print server
PrintQueue clonedPrinter = myLocalPrintServer.InstallPrintQueue("My clone of " + sourcePrintQueue.Name, "Xerox WCP 35 PS", port, "WinPrint", myPrintProperties);
myLocalPrintServer.Commit();

// Report outcome
Console.WriteLine("{0} in {1} has been installed and shared as {2}", clonedPrinter.Name, clonedPrinter.Location, clonedPrinter.ShareName);
Console.WriteLine("Press Return to continue ...");
Console.ReadLine();

См. также

  • System.Printing.IndexedProperties
  • PrintPropertyDictionary
  • LocalPrintServer
  • PrintQueue
  • DictionaryEntry
  • Документы в WPF
  • Общие сведения о печати
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX