打印作业时,上次作业状态为JOB_STATUS_PAUSED,而不是JOB_STATUS_PRINTED

时间:2018-03-21 17:04:59

标签: c++ winapi print-spooler-api

我在JOB_CHANGE之类的任何更改上轮询打印机队列,如果我看到某个作业消失,我会根据作业上次状态向服务器报告打印或删除作业。

问题是打印机Kyocera M3550返回最后一个状态JOB_STATUS_PAUSED,但没有JOB_STATUS_DELETED或JOB_STATUS_PRINTED。

这些是我按升序排列的法规:

  • JOB_STATUS_SPOOLING
  • 0(与任何已知状态不匹配)
  • JOB_STATUS_PASUED

这是什么意思?我不能将JOB_STATUS_PASUED作为我的最后一个状态进行转发,因为有人可能会故意这样做。

1 个答案:

答案 0 :(得分:1)

可能是Kyocera打印机有自己的打印处理器,在删除之前将打印作业设置为暂停状态。在这种情况下,您仍然可以通过作业消失的事实来检测删除。显然,您必须保留正在进行的打印作业列表,以便以这种方式检测删除。

首次出现打印作业时,应调用GetJob function并将Level参数设置为2并传递要填写的JOB_INFO_2结构.JOB_INFO_2结构将提供所有有关可用的打印作业的信息。