Administración de trabajos
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
Se ha introducido una característica de administración de trabajos en Windows 8.1 y versiones posteriores de Windows para proporcionar una vista dinámica de la cola de trabajos.
Esta característica también permite a un cliente cancelar un trabajo de impresión. Un cliente puede llamar a la interfaz de programación adecuada desde una aplicación de dispositivo para UWP o desde una extensión de impresora.
Las nuevas interfaces
Las siguientes interfaces se han introducido en Windows 8.1 para implementar la característica de administración de trabajos.
Inicio de una sesión de administración de trabajos
Para iniciar una sesión de administración de trabajos, primero debe especificar y solicitar un intervalo de trabajos que quiera administrar. Este intervalo de trabajos se denomina "vista" y se usa el método IPrinterQueue2::GetPrinterQueueView para especificarlo.
Si desea cambiar la vista para supervisar un conjunto diferente de trabajos, puede usar el método IPrinterQueueView::SetViewRange para hacerlo.
Tenga en cuenta que la cola de impresión es una cola dinámica. Por lo tanto, cada vez que cambia el estado de la cola de impresión, se desencadena un evento y el método IPrinterQueueViewEvent::OnChanged proporciona una instantánea actualizada de la vista solicitada.
El siguiente fragmento de código de C# muestra el uso de las nuevas interfaces para iniciar una sesión de administración de trabajos.
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 usa un nombre genérico para el mecanismo que desarrolla para mostrar la información al usuario.
Además, tenga en cuenta que la enumeración de trabajos se inicia cuando se agrega el primer controlador de eventos y se detiene cuando se quita el último controlador de eventos.