我被要求开发一个打印监控实用程序,该实用程序将从客户系统接收打印作业,将其路由到打印机,然后在打印机完成作业时触发主机系统中的更新,并显示成功状态。
我发现至少有两种方法可以从打印机队列中获取打印作业状态 - 使用 WMI 查询 Win32_PrintJob 或使用 API 到 winspool。当我尝试打印到已断开连接的打印机时,这两种方法都工作得很好 - 我能够获得状态为等待打印机可用的作业列表。
现在我正在尝试测试打印机缺纸或卡纸的情况。不幸的是,在这种情况下,打印作业将从打印假脱机程序队列中删除并拉到打印机内存中,等待用户放入更多纸张或解决卡纸问题。打印作业不再在队列中,但还没有打印出来,所以我真的可以用成功状态更新主机系统。我发现了几篇关于使用 PJL 或打印机特定 API 从打印机本身获取信息的文章,但我没有成功。有什么方法可以配置 Windows 后台处理程序队列以保留在队列中,直到打印机实际处理它?
谢谢!