如何:克隆打印机
更新:2007 年 11 月
大多数公司有时可能会购买多台同一型号的打印机。通常,这些打印机都使用大致相同的配置设置安装。安装每台打印机会很耗时并且容易出错。使用随 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();
请参见
概念
Windows Presentation Foundation 中的文档
参考
System.Printing.IndexedProperties