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);
}
于 2013-07-10T04:43:32.613 に答える