Как получать уведомления от принтера / диспетчера очереди печати для каждой страницы при печати листов Excel? - PullRequest
2 голосов
/ 22 июля 2011

Я написал надстройку для Excel в C # .NET.Когда пользователь открывает и Excel книгу и дает печать на листе, Excel делает печать.Есть только одно уведомление, которое генерируется Excel, - это событие AppEvents.Workbbok_BeforePrint ().После этого события не создаются для каждой страницы до ее печати. ​​

Я проанализировал способы получения уведомлений со стороны Excel.Но не смог найти ни одного.Затем я попробовал вариант получать уведомления от принтера / диспетчера очереди печати.Как я могу получить уведомление от принтера / диспетчера очереди печати, чтобы я получал уведомление для каждой напечатанной страницы.

Пожалуйста, помогите мне в этом.

Спасибо и С уважением, Sundareswaran Senthilvel

1 Ответ

0 голосов
/ 22 июля 2011

Это трудно сделать, особенно если в задании на печать не так много страниц. Это, вероятно, больше работы, чем стоит. :)

Однако вы можете сделать это, используя функции WinAPI EnumJobs и GetJob .

Позвоните OpenPrinter , чтобы получить ручку принтера.

Позвоните GetPrinter с уровнем 2, чтобы узнать количество заданий.

Позвоните EnumJobs . Изучайте JOB_INFO_1, JOB_INFO_2 или JOB_INFO_3 (в зависимости от того, какую информацию вы запрашивали - ссылки на других страницах выше на эти структуры и что они вам говорят), пока не найдете задание на печать из Excel.

Позвоните GetJob , используя этот JobID для получения информации о текущем состоянии операции печати. ​​

...