如何检查Winspool API的打印机作业的颜色/灰色



我用winspool api编写了一个监控打印机的程序FindFirstPrinterChangeNotification/FindNextChangeNotification方法我想知道一份工作是灰色的还是彩色的。我读api,但没有找到解决方案。我如何从PRINTER_NOTIFY_INFO_DATA获得工作的颜色?或者任何地方?

必须监视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);
    }

相关内容

最新更新