首页 文章

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

提问于
浏览
0

我通过使用 FindFirstPrinterChangeNotification / FindNextChangeNotification 方法使用winspool api编写了一个监视打印机的程序 . 我想知道的是一份工作是灰色或彩色印刷 . 我读api但找不到解决方案 . 如何从PRINTER_NOTIFY_INFO_DATA获得工作的颜色?或者在哪里?

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);
        }
    

相关问题