Partager via


Gestion du travail

Important

La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’impression.

Pour plus d’informations, veuillez consulter la section Plateforme d’impression moderne et le Guide de conception des applications de support d’impression.

Une fonctionnalité de gestion des travaux a été introduite dans Windows 8.1 et les versions ultérieures de Windows pour fournir une vue en direct de la file d’attente des travaux.

Cette fonctionnalité permet également à un client d’annuler un travail d’impression. Un client peut appeler l’interface de programmation appropriée depuis une application UWP pour périphérique ou depuis une extension d’imprimante.

Les nouvelles interfaces

Les interfaces suivantes ont été introduites dans Windows 8.1 pour implémenter la fonctionnalité de gestion des travaux.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection

Démarrage d’une session de gestion des travaux

Pour démarrer une session de gestion des travaux, vous devez d’abord spécifier et demander une plage de travaux que vous souhaitez gérer. Cette plage de travaux est appelée une « vue », et vous utilisez la méthode IPrinterQueue2::GetPrinterQueueView pour la spécifier.

Si vous souhaitez modifier la vue pour surveiller un ensemble différent de travaux, vous pouvez utiliser la méthode IPrinterQueueView::SetViewRange pour cela.

Notez que la file d’attente d’impression est une file d’attente dynamique. Ainsi, chaque fois que l’état de la file d’attente d’impression change, un événement est déclenché et la méthode IPrinterQueueViewEvent::OnChanged fournit une vue instantanée mise à jour de la vue demandée.

L’extrait de code C# suivant illustre l’utilisation des nouvelles interfaces pour initier une session de gestion des travaux.

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 est utilisé comme un nom générique pour le mécanisme que vous développez pour afficher les informations à l’utilisateur.

De plus, notez que l’énumération des travaux commence lorsque le premier gestionnaire d’événements est ajouté et s’arrête lorsque le dernier gestionnaire d’événements est supprimé.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection