【问题标题】:How to check color/gray from printer job of Winspool API如何从 Winspool API 的打印机作业中检查颜色/灰色
【发布时间】:2013-07-10 12:43:32
【问题描述】:

我已经编写了一个程序来通过使用winspool api来监控打印机 FindFirstPrinterChangeNotification / FindNextChangeNotification 方法。 我想知道作业是灰色还是彩色打印。我阅读了 api 但没有找到解决方案。 如何从 PRINTER_NOTIFY_INFO_DATA 获取作业颜色?或任何地方?

【问题讨论】:

    标签: printing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2021-06-23
      • 2019-06-25
      • 2014-01-08
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      相关资源
      最近更新 更多