我通过使用 FindFirstPrinterChangeNotification / FindNextChangeNotification方法编写了一个程序来使用 winspool api 监视打印机。我想知道作业是灰色还是彩色打印。我阅读了 api 但没有找到解决方案。如何从 PRINTER_NOTIFY_INFO_DATA 获得工作颜色?或任何地方?
问问题
242 次
1 回答
0
您必须监视 PRINTER_NOTIFY_INFO_DATA 结构中的 JOB_NOTIFY_FIELD_DEVMODE 字段。在 FindNextPrinterChangeNotification 调用和作业创建之后,通知到达,您可以从通知数据中检索有关作业颜色的信息。
示例(不完整,但我希望它有所帮助):
...
PPRINTER_NOTIFY_INFO pNotification = NULL;
...
FindNextPrinterChangeNotification(hNotification, &dwChange, &options, (LPVOID *) &pNotification);
...
PRINTER_NOTIFY_INFO_DATA jobData = pNotification->aData[notification_index];
if (data.Field == JOB_NOTIFY_FIELD_DEVMODE)
{
DEVMODE *pDevMode = (DEVMODE *) jobData.NotifyData.Data.pBuf;
int color = (pDevMode->dmFields & DM_COLOR ? pDevMode->dmColor : DMCOLOR_MONOCHROME);
}
于 2013-07-10T04:43:32.613 回答