0

FindFirstPrinterChangeNotification / FindNextChangeNotificationメソッドを使用して winspool api を使用してプリンターを監視するプログラムを作成しました 。知りたいのは、ジョブがグレー印刷かカラー印刷かです。APIを読みましたが、解決策が見つかりませんでした。PRINTER_NOTIFY_INFO_DATA からジョブの色を取得するにはどうすればよいですか? またはどこか?

4

1 に答える 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 に答える