プリンターを監視するツールを書いています。ジョブの印刷ページ数を取得する必要があります。プリンター イベント システム (FindFirstPrinterChangeNotification、FindNextPrinterChangeNotification、...) を使用しています。
dmCopies 値 (JOB_NOTIFY_FIELD_DEVMODE) で DEVMODE 構造体を取得できます。ただし、Microsoft Word を使用してドキュメントを印刷する場合、この値は正しくありません。これは Word のバグ (機能) に関連しています。Word は SP (http://support.microsoft.com/kb/919736/en-us) でこのバグを修正しています。ただし、SP は常にシステムにインストールできるとは限りません。
正しい dmCopies 値を取得するにはどうすればよいですか?
1 つの解決策は、スプール ファイル (SPL) を読み取り、そこから正しい DEVMODE 構造を取得することです。ただし、そのためには、RAW プリンター形式 (PCL、PostScript、ESC-P、CaPSL、Prescribe など) をサポートする必要があります (一部のプリンターは RAW でのみスプール ファイルを生成するため)。
多分誰かが他の解決策を知っていますか?