c# - 如何使用 PrintServer 类和 PrintQueue 类控制 PrintServer 上的所有打印作业

标签 c# .net

我是 C# 新手,被指派控制打印服务器上的打印作业(暂停、身份验证、恢复),该服务器连接了近 50 台 IP 打印机。

现在,我可以在运行时使用 printServer 类暂停和访问开发 PC 上特定打印机的打印作业的详细信息,例如:

PrintServer myprintServer = new PrintServer();

foreach (var job in myprintServer.GetPrintQueue("printerA").GetPrintJobInfoCollection()) 

job.pause();

当我的程序正在运行并且打印作业来自打印机B或打印机C时,它们不受控制。我必须为所有不可能的事情运行单独的循环。

有没有办法控制和暂停所有打印作业,无论它们是来自打印机 A、b、c 等,这些作业在打印服务器上接收并检查身份验证。要么我没有在 System.Printing 命名空间中找到所需的方法,要么任务无法实现。

最佳答案

GetPrintQueues应返回打印机上所有打印队列的集合:

PrintServer myprintServer = new PrintServer();

foreach (var queue in myprintServer.GetPrintQueues)
    foreach (var job in queue.GetPrintJobInfoCollection()) 
        job.pause();

请注意,有一个 overload它采用有效打印队列类型的列表

或者使用 Linq 中的 SelectMany:

    foreach (var job in queue.GetPrintQueues.SelectMany(q => GetPrintJobInfoCollection()) 
        job.pause();

关于c# - 如何使用 PrintServer 类和 PrintQueue 类控制 PrintServer 上的所有打印作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20615592/

相关文章:

c# - 使用WCF按照行业标准实现服务?

c# - 如何在 C# 中将数据从指针复制到指针?

.net - 在 64 位 Windows 计算机上使用 32 位 com 运行 32 位应用程序

c# - .NET 中安全身份的本地化

c# - 如何在startup.cs的ConfigureServices方法中正确注入(inject)DbContext实例(ASP.net core 1.1)?

c# - CaSTLe Windsor - 按惯例注册

c# - Windows Mobile 应用程序中的 IoC/DI 容器

c# - 如何在 C# 中撤消和重做(富文本框)

C# 对代码行数的惩罚?

c# - 设计 - C# 日期格式说明符中的约定