相关疑难解决方法(0)

如何从打印机队列中检索列表或作业数?

我正在寻找一种从特定打印机获取列表​​或作业数量的方法.在最好的情况下,我希望有一个"作业对象",它代表一个打印作业及其在打印队列中的名称.

这是必需的,因为我需要监视打印机的状态,这样我就可以用新的一批文件重新填充打印队列而不会溢出打印假脱机程序

提前致谢!

编辑:添加解决方案的代码片段

private int GetNumberOfPrintJobs()
{
    LocalPrintServer server = new LocalPrintServer();
    PrintQueueCollection queueCollection = server.GetPrintQueues();
    PrintQueue printQueue = null;

    foreach (PrintQueue pq in queueCollection)
    {
        if (pq.FullName == PrinterName)
            printQueue = pq;
    }

    int numberOfJobs = 0;
    if (printQueue != null)
        numberOfJobs = printQueue.NumberOfJobs;

    return numberOfJobs;
}
Run Code Online (Sandbox Code Playgroud)

.net c# printing queue

10
推荐指数
1
解决办法
1万
查看次数

C#批处理图应用程序(PrintServer和PrintQueue问题)

我有一个问题,我需要帮助.对于我当前的项目,我需要制作Batch Plot应用程序.该应用程序将有大约约2000个AutoCAD图纸,需要打印.

该应用程序需要5台打印机,每种格式1台,从A4到A0.到目前为止还没有问题.

现在我们都明白,我们不能在没有任何麻烦的情况下同时排队2000张图纸.我在网上进行了研究,找到了查看当前打印机队列的方法.使用PrintServer和PrintQueue.

这是问题开始的地方.首先,我无法找到我需要的网络打印机.打印机位于此网络地址:192.168.0.14(\ vps01w2k8).

遵循MSDN的指南:

    PrintServer m_PrintServer = new PrintServer(@"\\vps01w2k8");
    PrintQueueCollection m_PrintQueueCollection = m_PrintServer.GetPrintQueues();

    foreach (PrintQueue queue in m_PrintQueueCollection)
    {
         cbPrinters.Items.Add(queue.Name.ToString());
    }

这不会给我任何打印机.尝试使用LocalPrintServer(或只是没有传递任何参数的PrintServer).给我本地打印机(显然),而不是我的网络打印机.

我的下一步是找到一种方法来查找我所安装的所有打印机using System.Drawing.Printing;而不是using System.Printing;.

    foreach (String printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
    {
         cbPrinters.Items.Add(printer.ToString());
    }

这个简单的代码给了我所有的打印机,包括联网打印机.但是,现在我陷入了.NET 2.0和3.0之间(以及之后).PrinterSettings和PrintServer/PrintQueue类没有连接.

最后,我尝试使用WMI方法访问打印机队列.查询给我结果的Win32_PrintJob.不幸的是,这些都伴随着10秒锁定来检索这些结果.

我没有想法.我正在寻找一个修复PrintServer以正确返回我的网络打印机或任何建议使用PrinterSettings类进行批量绘图的类似技术.

提前致谢,

约迪

c# printing system.printing c#-3.0 c#-2.0

4
推荐指数
1
解决办法
3114
查看次数

标签 统计

c# ×2

printing ×2

.net ×1

c#-2.0 ×1

c#-3.0 ×1

queue ×1

system.printing ×1