Freigeben über


Jobverwaltung

Wichtig

Die Modern Print-Plattform ist die von Windows bevorzugte Methode zur Kommunikation mit Druckern. Wir empfehlen die Verwendung des Microsoft IPP-Treibers für die Posteingangsklasse zusammen mit Print Support Apps (PSA), um das Druckverhalten in Windows 10 und 11 für die Entwicklung von Druckergeräten anzupassen.

Weitere Informationen finden Sie unter Modern Print-Plattform und der Anleitung zum Design der Print-Support-App.

In Windows 8.1 und späteren Versionen von Windows wurde eine Funktion zur Jobverwaltung eingeführt, die eine Live-Ansicht der Warteschlange bietet.

Diese Funktion bietet einem Client auch die Möglichkeit, einen Job abzubrechen. Ein Client kann die entsprechende Programmierschnittstelle aus einer UWP-App für Geräte oder aus einer Drucker-Erweiterung heraus aufrufen.

Die neuen Schnittstellen

Die folgenden Schnittstellen wurden in Windows 8.1 eingeführt, um die Funktion der Jobverwaltung zu implementieren.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection

Initiieren einer Sitzung zur Jobverwaltung

Um eine Sitzung zur Jobverwaltung zu initiieren, müssen Sie zunächst eine Reihe von Jobs angeben und anfragen, die Sie verwalten möchten. Dieser Jobbereich wird als "Ansicht" bezeichnet, und Sie verwenden die Methode IPrinterQueue2::GetPrinterQueueView, um ihn anzugeben.

Wenn Sie die Ansicht ändern möchten, um eine andere Reihe von Jobs zu überwachen, können Sie dazu die Methode IPrinterQueueView::SetViewRange verwenden.

Beachten Sie, dass die Druckwarteschlange eine dynamische Warteschlange ist. Jedes Mal, wenn sich also der Status der Warteschlange ändert, wird ein Ereignis ausgelöst und die Methode IPrinterQueueViewEvent::OnChanged liefert einen aktualisierten Snapshot der angeforderten Ansicht.

Der folgende C#-Code-Schnipsel veranschaulicht die Verwendung der neuen Schnittstellen zur Initiierung einer Jobverwaltung.

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 wird als allgemeiner Name für den Mechanismus verwendet, den Sie für die Anzeige der Informationen für den Benutzer entwickeln.

Beachten Sie auch, dass die Auflistung der Jobs beginnt, wenn der erste Ereignis-Handler hinzugefügt wird, und sie wird beendet, wenn der letzte Ereignis-Handler entfernt wird.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection