【问题标题】:checking printer status in c#?在 C# 中检查打印机状态?
【发布时间】:2013-11-02 01:46:10
【问题描述】:

我最近就这个问题提出了几个相关的问题,但这次我想尽可能直截了当地解决我在开发过程中遇到的问题。

我们正在尝试通过移动打印机打印票证,需要确定打印机是在线、离线还是出现错误,以便我们更好地处理它:

这又是我打印时代码的 sn-p,但如果出现任何问题,似乎无法让它陷入困境:

            Process process = new Process();
            //process.StartInfo.CreateNoWindow = true;
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.StartInfo.FileName = defFile;
            if (rwPrinter.Length > 0)
            {
                process.StartInfo.Verb = "printto";
                //process.StartInfo.Verb = (Path.Combine(System.Windows.Forms.Application.StartupPath, "printto.exe"));
                process.StartInfo.Arguments = "\"" + rwPrinter + "\"";
            }
            else
            {
                process.StartInfo.Verb = "print";
            }

            try
            {
                process.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

请原谅我在这方面的仓促,因为我有一个不耐烦让我按预期工作的老板,请告诉我如何才能让它进入错误陷阱,谢谢。

【问题讨论】:

  • 你看过example shown on MSDN吗?这使用 System.Printing.PrintServer 类来确定给定打印服务器的状态。
  • 还可以查看PrinterSettings class 以获取打印机状态信息。
  • 在 PrinterSettings 示例中,我注意到它在确定设置之前尝试打印文本文档。有没有办法不这样测试?

标签: c# pdf printing error-handling


【解决方案1】:

对于问题的事后处理可以等待退出再查看ExitCode。如果处理打印的进程能够很好地报告有意义的代码,您可以显示更有意义的消息,但这取决于被调用的进程。

try
{
      process.Start();
      process.WaitForExit();
      if (process.ExitCode >0)
      {
          MessageBox.Show(String.Fromat("print failed, exit code :{0} ", process.ExitCode ));
      }
}
catch (Exception ex)
{
      MessageBox.Show(ex.Message);
}

【讨论】:

  • 虽然我非常希望这能解决我的问题,但当我尝试调试它并故意将我的移动打印机离线并最终在线时,它看起来像是卡在“process.WaitForExit() " 以某种方式行。
  • 印刷的过程是什么?
  • 这是一个“打印”过程。看起来我的问题类似于stackoverflow.com/questions/14455964/… 的以下未回答问题
  • 这比在 c# 实现中更需要你:support.microsoft.com/kb/160129
  • 嗯,我注意到的一件事是在我尝试打印到脱机打印机后,PrinterStatus 值从 3 变为 2,直到我手动从打印机队列中删除。我更喜欢在尝试打印之前检查的东西。如果我坚持这种方式,我可能不得不以某种方式以编程方式从队列中删除此打印作业。
猜你喜欢
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多