c #: Как контролировать задание на печать с помощью winspool_drv - PullRequest
1 голос
/ 05 сентября 2010

Недавно я делаю инструмент для мониторинга системы.Для этого мне нужен класс, чтобы контролировать работу печати.Например, когда печать началась, успешно или нет, сколько страниц.Я знаю, что могу сделать это с помощью winspool.drv.Но не как.Я много искал, но безуспешно.Любой код / ​​предложение может быть очень полезным.Спасибо.

1 Ответ

2 голосов
/ 05 сентября 2010

Ну, я не знаю о winspool.drv, но вы можете использовать WMI для получения статуса принтера.Вот пример использования Win32_Printer .

PrintDialog pd = new PrintDialog();
pd.ShowDialog();
PrintDoc.PrinterSettings = pd.PrinterSettings;
PrintDoc.PrintPage += new PrintPageEventHandler(PrintDoc_PrintPage);
PrintDoc.Print();

object status = Convert.ToUInt32(9999);
while ((uint)status != 0) // 0 being idle
{
    ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_Printer where Name='" + pd.PrinterSettings.PrinterName + "'");
    foreach (ManagementObject service in mos.Get())
    {
    status = service.Properties["PrinterState"].Value;
    Thread.Sleep(50);
    }
}

Если вы не используете объект PrintDialog (для выбора принтера), вы можете запустить запрос WMI, и он вернет всепринтеры в системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...