Управление заданиями
Важно!
Мы рекомендуем использовать драйвер microsoft IPP класса "Входящие" вместе с приложениями поддержки печати (PSA) для настройки печати в Windows 10 и 11 для разработки принтеров.
Дополнительные сведения см. в руководстве по проектированию приложений поддержки печати.
Функция управления заданиями появилась в Windows 8.1 и более поздних версиях Windows, чтобы обеспечить динамическое представление очереди заданий.
Эта функция также позволяет клиенту отменить задание печати. Клиент может вызывать соответствующий программный интерфейс из приложения устройства UWP или из расширения принтера.
Новые интерфейсы
Следующие интерфейсы были представлены в Windows 8.1 для реализации функции управления заданиями.
Инициализация сеанса управления заданиями
Чтобы инициировать сеанс управления заданиями, необходимо сначала указать и запросить диапазон заданий, которыми вы хотите управлять. Этот диапазон заданий называется представлением, и для его указания используется метод IPrinterQueue2::GetPrinterQueueView .
Если вы хотите изменить представление для мониторинга другого набора заданий, для этого можно использовать метод IPrinterQueueView::SetViewRange .
Обратите внимание, что очередь печати является динамической очередью. Поэтому при каждом изменении состояния очереди печати запускается событие , а метод IPrinterQueueViewEvent::OnChanged предоставляет обновленный snapshot запрошенного представления.
В следующем фрагменте кода C# показано использование новых интерфейсов для инициации сеанса управления заданиями.
void PerformJobManagement(IPrinterQueue2 queue)
{
//
// Create a printer queue view and specify the range of
// print queue positions to be monitored
//
PrinterQueueView queueView = queue.GetPrinterQueueView(0, COUNT_JOBS_MONITORED);
//
// Add the event handler to the IPrinterQueueView object via the
// standard COM event model, the IConnectionPoint mechanism.
//
queueView.OnChanged += queueView_OnChanged;
//
// When a different range of print jobs needs to be monitored,
// reset/update the view.
//
queueView.SetViewRange(20, COUNT_JOBS_MONITORED);
}
//
// Create an event handler that is called when
// there is a change in the View
//
void queueView_OnChanged(
IPrintJobCollection pcollection,
uint ulviewOffset,
uint ulviewSize,
uint ulcountJobsInPrintQueue)
{
foreach (IPrintJob job in pCollection)
{
UIDisplay(job.Name);
UIDisplay(job.Id);
}
}
UIDisplay используется универсальное имя для механизма, который вы разрабатываете для отображения информации пользователю.
Кроме того, обратите внимание, что перечисление заданий начинается при добавлении первого обработчика событий и останавливается при удалении последнего обработчика событий.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по