Udostępnij przez


Zarządzanie zadaniami

Ważny

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zobacz Print Support App v1 and v2 design guide (Przewodnik projektowania aplikacji do obsługi wydruku w wersji 1 i 2).

Funkcja zarządzania zadaniami została wprowadzona w systemie Windows 8.1 i nowszych wersjach systemu Windows w celu zapewnienia widoku na żywo kolejki zadań.

Ta funkcja umożliwia również klientowi anulowanie zadania drukowania. Klient może wywołać odpowiedni interfejs programowania z poziomu aplikacji urządzenia platformy UWP lub z rozszerzenia drukarki.

Nowe interfejsy

Następujące interfejsy zostały wprowadzone w systemie Windows 8.1 w celu zaimplementowania funkcji zarządzania zadaniami.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection

Inicjowanie sesji zarządzania zadaniami

Aby zainicjować sesję zarządzania zadaniami, należy najpierw określić i zażądać zakresu zadań, którymi chcesz zarządzać. Ten zakres zadań nazywa się "widokiem" i używasz metody IPrinterQueue2::GetPrinterQueueView, aby go określić.

Jeśli chcesz zmienić widok, aby monitorować inny zestaw zadań, możesz użyć metody IPrinterQueueView::SetViewRange, aby to zrobić.

Należy pamiętać, że kolejka wydruku jest kolejką dynamiczną. Za każdym razem, gdy stan kolejki wydruku zmienia się, zdarzenie zostaje wyzwolone, a metoda IPrinterQueueViewEvent::OnChanged udostępnia odświeżoną migawkę żądanego widoku.

Poniższy fragment kodu w języku C# ilustruje użycie nowych interfejsów do inicjowania sesji zarządzania zadaniami.

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 jest używana nazwa ogólna mechanizmu opracowywanego do wyświetlania informacji użytkownikowi.

Należy również pamiętać, że wyliczenie zadania jest uruchamiane po dodaniu pierwszego programu obsługi zdarzeń i jest zatrzymywane po usunięciu ostatniego programu obsługi zdarzeń.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection