gpt4 book ai didi

c# - 有没有办法检查打印过程是否成功?

转载 作者:可可西里 更新时间:2023-11-01 07:58:38 27 4
gpt4 key购买 nike

我有一个需要打印机票的应用程序。每张票必须是唯一的。该应用程序是 Windows 窗体,完全用 C# 编写。对于我们的应用程序,我们使用三星 ML-2525 激光单色打印机。

流程基本上如下,运算符(operator)选择一个产品/票(这是唯一的)然后按下一个按钮做两件事:

  1. 连接到数据库并更新使用的产品
  2. 打印票证(这是使用 System.Drawing 和 GDI+ 完成的)

由于某种原因,每隔一段时间,需要打印的图像没有发送到打印机。这是一种罕见的情况,但它确实发生了。

我尝试使用 Win32_Printer ( http://msdn.microsoft.com/en-us/library/Aa394363 ) 连接到打印机,但我无法获取当前打印机的状态(在线、离线、碳粉不足、卡纸等)。我只能检查打印机是否存在以及纸张尺寸是否安装正确。我尝试了类似于以下的代码,但没有成功

    private string MonitorPrintJobWmi()
{
var jobMessage = String.Empty;
var scope = new ManagementScope(ManagementPath.DefaultPath);
scope.Connect();

var selectQuery = new SelectQuery { QueryString = @"select * from Win32_PrintJob" };

var objSearcher = new ManagementObjectSearcher(scope, selectQuery);
var objCollection = objSearcher.Get();

foreach (var job in objCollection)
{
if (job != null)
{
jobMessage += String.Format("{0} \r\n", job["Name"].ToString());
jobMessage += String.Format("{0} \r\n", job["JobId"].ToString());
_jobId = Convert.ToInt32(job["JobId"]);
jobMessage += String.Format("{0} \r\n", job["JobStatus"].ToString());
jobMessage += String.Format("{0} \r\n", job["Status"].ToString());
}
}
return jobMessage;
}

我试图获取打印机的 API,但无法获取它。顺便说一句,打印机的软件确实会在 Windows 工具栏中指示不同的错误。

我的问题是,是否有人可以指导我如何连接到打印机并检查打印是否成功。

此外,如果有人知道我可以在其中完成此操作(即更改硬件)的其他特定打印机,那将很有帮助。

谢谢,

最佳答案

要获取本地机器上的打印队列列表,请尝试 PrintServer 的 GetPrintQueues方法。

一旦你有了一个 PrintQueue 的实例与相关打印机关联的对象,您可以使用它来访问打印机的状态(IsOffline、IsPaperOut 等)。此外,您还可以使用它来获取给定队列 ( GetPrintJobInfoCollection ) 中的作业列表,这样您就可以获取特定于作业的状态信息(IsInError、IsCompleted、IsBlocked 等)。

希望这对您有所帮助!

关于c# - 有没有办法检查打印过程是否成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com