在任何给定时间,大中型公司都可能会有多台打印机由于夹纸、缺纸或者某种其他异常情况而无法工作。 Microsoft .NET Framework的APIs 中公开了一组丰富的打印机属性,通过这些属性可以快速调查打印机的状态。

示例

下面是创建这种实用工具的主要步骤。
获取所有打印服务器的列表。
遍历各服务器以查询其打印队列。
在服务器遍历的每个处理过程中,遍历所有服务器的队列,并读取每个可能指示队列当前未工作的属性。
下面的代码由一系列代码段组成。 为简单起见,此示例假设存在一个用 CRLF 分隔的打印服务器列表。 变量 fileOfPrintServers 是该文件的一个StreamReader 对象。 由于每个服务器名称都在其各自的行上,因此每次调用ReadLine 时都会获取下一台服务器的名称,并将StreamReader 的游标移到下一行的开头。
在外部循环中,该代码为最后一台打印服务器创建一个PrintServer 对象,并指定该应用程序将对最后一台打印服务器具有管理权限。

注意
如果存在多台服务器,则可以通过使用 PrintServer(String, String[], PrintSystemDesiredAccess) 构造函数来改进性能,这些构造函数仅对您将需要的属性进行初始化。

此示例随后使用GetPrintQueues 来创建一个包含所有服务器队列的集合,并开始遍历它们。 内部循环包含一个与打印机状态的两种检查方法相对应的分支结构:
此示例对这两种方法均进行了演示,因此用户在这之前会被询问要使用哪种方法,如果用户希望使用QueueStatus 属性的标志,则可以回答“y”(是)。 下面详细介绍了这两种方法。
最后,结果将呈现给用户。