Delen via


Taakbeheer

Belangrijk

Het moderne afdrukplatform is de voorkeursmiddel van Windows om te communiceren met printers. We raden aan om de IP-inboxdriverklasse van Microsoft te gebruiken, samen met Print Support Apps (PSA), om de gebruikerservaring van het afdrukken in Windows 10 en 11 aan te passen voor de ontwikkeling van printerapparaten.

Voor meer informatie, zie de gids voor het ontwerpen van printondersteuningsapps.

Er is een functie voor taakbeheer geïntroduceerd in Windows 8.1 en nieuwere versies van Windows om een liveweergave van de taakwachtrij te bieden.

Met deze functie kan een client ook een afdruktaak annuleren. Een client kan de juiste programmeerinterface aanroepen vanuit een UWP-apparaat-app of vanuit een printerextensie.

De nieuwe interfaces

De volgende interfaces zijn geïntroduceerd in Windows 8.1 om de functie voor taakbeheer te implementeren.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection

Een taakbeheersessie starten

Als u een sessie voor taakbeheer wilt starten, moet u eerst een reeks taken opgeven en aanvragen die u wilt beheren. Dit bereik van taken wordt een 'weergave' genoemd en u gebruikt de IPrinterQueue2::GetPrinterQueueView methode om deze op te geven.

Als u de weergave wilt wijzigen om een andere set taken te bewaken, kunt u hiervoor de methode IPrinterQueueView::SetViewRange gebruiken.

De afdrukwachtrij is een dynamische wachtrij. Telkens wanneer de status van de afdrukwachtrij wordt gewijzigd, wordt een gebeurtenis geactiveerd en biedt de methode IPrinterQueueViewEvent::OnChanged een bijgewerkte momentopname van de aangevraagde weergave.

Het volgende C#-codefragment illustreert het gebruik van de nieuwe interfaces voor het initiëren van een taakbeheersessie.

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 wordt een algemene naam gebruikt voor het mechanisme dat u ontwikkelt voor het weergeven van de informatie aan de gebruiker.

En houd er ook rekening mee dat de opsomming van taken begint wanneer de eerste gebeurtenis-handler wordt toegevoegd en wordt gestopt wanneer de laatste gebeurtenis-handler wordt verwijderd.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection-