Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Printing 如何从Winspool API的打印机作业中检查颜色/灰色_Printing - Fatal编程技术网

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

Printing 如何从Winspool API的打印机作业中检查颜色/灰色,printing,Printing,我已经编写了一个程序来监控打印机使用winspool api使用 FindFirstTranschangeNotification/FindNextChangeNotification方法。 我想知道一份工作是灰色的还是彩色的。我读了api,但没有找到解决方案。 如何从打印机\通知\信息\数据中获取作业颜色?或任何位置?您必须监视打印机的“通知信息”数据结构中的“作业通知”字段“数据模式”字段。在FindNextPrinterChangeNotification调用和作业创建之后,通知到达,您可

我已经编写了一个程序来监控打印机使用winspool api使用 FindFirstTranschangeNotification/FindNextChangeNotification方法。 我想知道一份工作是灰色的还是彩色的。我读了api,但没有找到解决方案。
如何从打印机\通知\信息\数据中获取作业颜色?或任何位置?

您必须监视打印机的“通知信息”数据结构中的“作业通知”字段“数据模式”字段。在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);
    }