本文内容
大多数企业有时会购买多台同一型号的打印机。 通常,这些打印机都安装了几乎相同的配置设置。 安装每台打印机既费时又容易出错。 使用 Microsoft .NET Framework 公开的 System.Printing.IndexedProperties 命名空间和 InstallPrintQueue 类可以立即安装从现有打印队列克隆的任意数量的附加打印队列。
示例
在下面的示例中,从现有打印队列克隆第二个打印队列。 第二个队列与第一个队列的不同之处仅在于名称、位置、端口和共享状态。 执行此操作的主要步骤如下。
-
为将要克隆的现有打印机创建 PrintQueue 对象。
-
从 PrintQueue 的 PropertiesCollection 中创建 PrintPropertyDictionary。 此字典中每个条目的 Value 属性是从 PrintProperty 派生的类型之一的对象。 可通过两种方式在此字典中设置条目的值。
-
使用字典的 Remove 和 Add 方法删除条目,然后使用所需的值重新添加它。
-
使用字典的 SetProperty 方法。
下面的示例对这两种方式进行说明。
-
-
创建 PrintBooleanProperty 对象并将其 Name 设置为“IsShared”以及将其 Value 设置为
true
。 -
使用 PrintBooleanProperty 对象作为 PrintPropertyDictionary 的“IsShared”条目的值。
-
创建 PrintStringProperty 对象并将其 Name 设置为“ShareName”以及将其 Value 设置为相应的 String。
-
使用 PrintStringProperty 对象作为 PrintPropertyDictionary 的“ShareName”条目的值。
-
创建另一个 PrintStringProperty 对象并将其 Name 设置为“Location”以及将其 Value 设置为相应的 String。
-
使用第二个 PrintStringProperty 对象作为 PrintPropertyDictionary 的“Location”条目的值。
-
创建一个 String 数组。 每一项都是服务器上的端口的名称。
-
使用 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();