C# 如何知道向本地主机打印机复制命令的打印过程何时成功完成?

C# 如何知道向本地主机打印机复制命令的打印过程何时成功完成?,c#,printing,zpl,C#,Printing,Zpl,目前,我正在使用以下方式向打印机发送zpl文件: /C copy /B zplFile.zpl \\localhost\GX420d 在C#中,我使用以下代码: System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startI

目前,我正在使用以下方式向打印机发送zpl文件:

/C copy /B zplFile.zpl \\localhost\GX420d
在C#中,我使用以下代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = processName; //cmd
startInfo.Arguments = string.Format(processArgument, "tmp.txt");
process.StartInfo = startInfo;
process.Start();
一切都很好,问题是我没有握手来知道打印过程何时成功完成,例如,如果我发送了一个zpl文件,打印机没有标签,或者断开了连接,执行命令的系统会假定打印过程成功完成

我需要知道标签是否打印成功

注1:打印机是使用USB电缆的GX420d

有什么建议吗

提前谢谢

编辑:

如果您在下图中看到,有待打印的作业,那么,作为一个工作区,我可以使用C#在这个列表中搜索,这可能吗


好吧,也许这项工作会奏效

如果你们有更好的选择来解决这个问题,我将感谢你们的评论

只是为了记录,我搜索打印机作业,并计算待处理的作业,如果超过零,我假设它失败了

这些步骤是: 1.-将ZPL文件发送到打印机。 2.-使用
System.Threading.Thread.Sleep
等待预定时间。 3.-搜索打印机挂起的作业,如果计数>0,则将失败,因为我假设标签未成功打印


非常感谢大家花时间回答问题。如果您知道更好的解决方案,我将非常感谢您的评论。

检查此项,其中一个变量可能包含错误:

var process = new Process();
var startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = processName; //cmd
startInfo.Arguments = string.Format(processArgument, "tmp.txt");
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
process.StartInfo = startInfo;
process.Start();
string outputText = process.StandardOutput.ReadToEnd(); // Check this
string errorText = process.StandardError.ReadToEnd();   // Check this
int exitCode = process.ExitCode;                        // Check this
process.WaitForExit();
// In outputText is probably something here...
// In errorText is probably something here...
// In exitCode is probably something here...

请查看中的Host Query~HQ ZPL命令


这不是一个完美的解决方案,但其思想是,您可以在发送ZPL打印之前或之后查询打印机的状态。

有两种检查方法,首先检查ReturnCode(0为成功,否则会出错),或者StandardOutput/StandardError会显示一些内容,如“出错…”一词。您的意思是在C代码中吗?process.Start()方法返回一个真值。我的意思是,检查这些属性:相同的,总是返回相同的值。我解决了这个问题,我在下面的评论中提到了这个问题。谢谢你的帮助。谢谢你,伙计,但是之前我检查了它的属性,没有错误,那是因为确实没有错误,代码成功地发送了ZPL文件。问题出在打印机上,因为打印机没有纸张或可能没有连接。