Вы уверены, что хотите напечатать X страниц? диалоговое окно перед фактической печатью (для любого приложения)

В Интернет-кафе, где людям разрешено печатать, иногда они печатают больше страниц, чем намеревались.

Я ищу способ отобразить сообщение "Вы уверены, что хотите напечатать X страниц?" после нажатия кнопки печати (в любом приложении), но до того, как задание будет отправлено в очередь.

Я ищу указатели на то, как реализовать такой хук.

(Я рассматривал возможность изменения FOSS PDF-принтера таким образом, чтобы он сначала печатал в PDF-файл, а затем отображал диалоговое окно, а затем, если пользователь нажимал «Да», печатал его на реальном принтере. Но это кажется действительно окольным способом сделать это, а также Таким образом, теряются специфические для принтера функции.)


person Tarnay Kálmán    schedule 03.11.2009    source источник
comment
Я так и не удосужился реализовать это сам. Но я нашел программное обеспечение для управления интернет-кафе, которое может это сделать: truecafe.net/doc/printer_watcher.html.   -  person Tarnay Kálmán    schedule 23.04.2011


Ответы (1)


Одна из вещей, которые вы могли бы сделать, что также довольно сложно, — это приостановить диспетчер очереди печати, распечатать задание, получить количество страниц, а затем запросить у пользователя подтверждение. Если пользователь одобряет задание, отпустите спулер. У меня нет под рукой вызовов API, но я довольно легко манипулирую очередями спулера.

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

Другой альтернативой может быть принудительный вывод в файл WMF или EMF и подсчет количества страниц таким образом, а затем передача его спулеру. Это похоже на ваше представление о выводе его в PDF, но использует собственный подход. (По сути, это то, что приложения обычно делают (делают) для предварительного просмотра - рендеринг задания в формате метафайла, который затем отображается на экране или загружается в принтер)

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

Надеюсь это поможет.

person Bill    schedule 05.11.2009
comment
Мне нравится решение с паузой в очереди печати, спасибо! Кажется простым. Большинство этих принтеров основаны на протоколе TCP/IP, поэтому каждая рабочая станция имеет свою собственную очередь. Решение WMF/EMF кажется чище, но я понятия не имею, с чего начать. - person Tarnay Kálmán; 06.11.2009