Как получать уведомления от принтера / диспетчера очереди печати для каждой страницы при печати листов Excel?
Я написал надстройку для Excel в C#.NET. Когда пользователь открывает и Excel книгу и дает печать на листе, Excel делает печать. Есть только одно уведомление, которое генерируется Excel, - это событие AppEvents.Workbbok_BeforePrint(). После этого события не генерируются для каждой страницы до ее печати.
Я проанализировал способы получения уведомлений от Excel. Но не смог найти ни одного. Затем я попробовал вариант получать уведомления от принтера / диспетчера очереди печати. Как я могу получить уведомление от принтера / диспетчера очереди печати, чтобы я получал уведомления для каждой распечатанной страницы.
Пожалуйста, помогите мне в этом.
Спасибо и С наилучшими пожеланиями, Sundareswaran Senthilvel
1 ответ
Это трудно сделать, особенно если в задании на печать не так много страниц. Это, вероятно, больше работы, чем стоит.:)
Вы можете сделать это, однако, используя функции WinAPI EnumJobs и GetJob.
Вызовите OpenPrinter, чтобы получить дескриптор принтера.
Вызовите GetPrinter с уровнем 2, чтобы узнать количество заданий.
Позвоните в EnumJobs. Изучите JOB_INFO_1, JOB_INFO_2 или JOB_INFO_3 (в зависимости от того, какую информацию вы запрашивали - ссылки на других страницах выше на эти структуры и что они вам говорят), пока не найдете задание на печать из Excel.
Вызовите GetJob, используя этот JobID, чтобы получить информацию о текущем состоянии операции печати.