我试图获取Zebra标签打印机的打印机状态。我试过WMI,检查PrinterState,PrinterStatus,ExtendedPrinterStatus,DetectedErrorState,ExtendedDetectedErrorState,但我总是得到诸如Unknown或Idle等值。打印机实际上没有纸张,我想获得该状态。 Windows打印机区域本身也报告“就绪”状态。我安装了一个小型斑马状态监视器应用程序,并正确报告“缺纸”。PInvoke GetPrinterData()获取打印机状态或错误
我想我可能需要pInvoke一些Windows APIs直接查询打印机。 Zebra有this reference,它显示了GetPrinter()和GetPrinterData()的用法。我发现使用GetPrinter()的this C# example可以工作并且包含良好的信息,但状态为0,并且我没有看到任何指示缺纸的内容。
现在,我想尝试使用GetPrinterData(),其中Zebra document使用并检查PRINTER_STATUS_PAPER_OUT
。使用OpenPrinter()(这是成功的),我已经尝试了一些GetPrinterData()的变体。这里有一个:
uint pType = 0;
uint pcbNeeded = 0;
uint result1 = GetPrinterData(pHandle, "Error", out pType, null, 0, out pcbNeeded);
RESULT1总是2的值,pcbNeeded为0值,即使我关掉打印机,或如果打印机有纸,我总是得到同样的价值观。
任何有关如何正确pInvoke GetPrinterData()或如何获得实际的打印机状态的帮助将是非常有用的。
请总结一下链接的内容;只是发布一个链接是没有帮助的。 – LittleBobbyTables 2012-10-05 22:59:33