Я пишу инструмент, который контролирует принтеры. Мне нужно получить количество распечатанных страниц для работы. Я использую систему событий принтера (FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification, ...).
Я могу получить структуру DEVMODE со значением dmCopies (JOB_NOTIFY_FIELD_DEVMODE). Но это значение неверно, когда Microsoft Word используются для печати документов. Это связано с ошибкой Word (функция). В Word исправлена эта ошибка с SP (http://support.microsoft.com/kb/919736/en-us). Но SP не всегда можно установить в системе.
Как я могу получить правильное значение dmCopies?
Одним из решений является чтение файлов спула (SPL) и получение из них правильной структуры DEVMODE. Но для этого необходимо поддерживать форматы принтеров RAW (PCL, PostScript, ESC-P, CaPSL, Prescribe, ...) (поскольку некоторые принтеры генерируют файлы спула только в формате RAW).
Может, кто-нибудь знает другое решение?