【WPF.NET开发】克隆打印机

本文内容

大多数企业有时会购买多台同一型号的打印机。 通常,这些打印机都安装了几乎相同的配置设置。 安装每台打印机既费时又容易出错。 使用 Microsoft .NET Framework 公开的 System.Printing.IndexedProperties 命名空间和 InstallPrintQueue 类可以立即安装从现有打印队列克隆的任意数量的附加打印队列。

示例

在下面的示例中,从现有打印队列克隆第二个打印队列。 第二个队列与第一个队列的不同之处仅在于名称、位置、端口和共享状态。 执行此操作的主要步骤如下。

  1. 为将要克隆的现有打印机创建 PrintQueue 对象。

  2. 从 PrintQueue 的 PropertiesCollection 中创建 PrintPropertyDictionary。 此字典中每个条目的 Value 属性是从 PrintProperty 派生的类型之一的对象。 可通过两种方式在此字典中设置条目的值。

    • 使用字典的 Remove 和 Add 方法删除条目,然后使用所需的值重新添加它。

    • 使用字典的 SetProperty 方法。

    下面的示例对这两种方式进行说明。

  3. 创建 PrintBooleanProperty 对象并将其 Name 设置为“IsShared”以及将其 Value 设置为 true

  4. 使用 PrintBooleanProperty 对象作为 PrintPropertyDictionary 的“IsShared”条目的值。

  5. 创建 PrintStringProperty 对象并将其 Name 设置为“ShareName”以及将其 Value 设置为相应的 String

  6. 使用 PrintStringProperty 对象作为 PrintPropertyDictionary 的“ShareName”条目的值。

  7. 创建另一个 PrintStringProperty 对象并将其 Name 设置为“Location”以及将其 Value 设置为相应的 String

  8. 使用第二个 PrintStringProperty 对象作为 PrintPropertyDictionary 的“Location”条目的值。

  9. 创建一个 String 数组。 每一项都是服务器上的端口的名称。

  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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉特思米(gitusme)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值