На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Перехват очереди печати на C#


Мне нравится моя работа. Постоянно заказчики дают такие задачи, которые однотипными никак нельзя назвать. Вот, например, для одного проекта потребовалось создать программу, одной из функций которой – управление очередью печати принтера. Необходимо было написать такое приложение, которое могло бы перехватывать документы (файлы), отправленные на печать и останавливать их. Далее надо управлять цветовым профилем и снова отправлять распечатывать.



На самом деле задача решается до смешного просто. Подключаем System.Printing:

using System.Printing;
Не забываем также добавить ссылку в проект! Далее кидаем на форму backgroundWorker1, запускаем его по нажатию кнопки:

backgroundWorker1.RunWorkerAsync();
И прописываем обработчик для него:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Boolean flag = true;
LocalPrintServer server = new LocalPrintServer();
while (flag)
{
string[] dirs = Directory.GetFiles(@"C:\Windows\System32\spool\PRINTERS");
if (dirs.Length > 0)
{
foreach (PrintSystemJobInfo jobInfo in server.DefaultPrintQueue.GetPrintJobInfoCollection()) {
jobInfo.Pause();
MessageBox.Show(jobInfo.Name);
flag = false;
}
System.Threading.Thread.Sleep(500);
}        
}
}
Здесь мы каждые полсекунды в фоновом режиме проверяем, есть ли что-то в папке «System32\spool\PRINTERS» и если там появились файлы, то немедленно пробегаем по заданиям очереди печати (по умолчанию мы предполагаем, что их изначально нет), ставим на паузу и выводим имя файла, который какая-то программа хотела распечатать:



Смотрим очередь печати – там наш документ:



Зная его имя, можно уже отменить печать, конвертировать его или сделать что-то еще. В следующей статье мы научимся работать с цветовым профилем.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, си шарп, печать, принтер





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Введение в скрипты Postman
Заменитель прошлого


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.