Partager via


Gestion du travail

Important

Nous vous recommandons d’utiliser le pilote de classe de boîte de réception IPP 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 d’appareils d’imprimante.

Pour plus d’informations, consultez le guide de conception d’application de prise en charge de l’impression.

Une fonctionnalité de gestion des travaux a été introduite dans Windows 8.1 et versions ultérieures de Windows pour fournir une vue dynamique 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 à partir d’une application d’appareil UWP ou d’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

Lancement d’une session de gestion des travaux

Pour lancer 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 « vue », et vous utilisez la méthode IPrinterQueue2 ::GetPrinterQueueView pour la spécifier.

Si vous souhaitez modifier l’affichage pour surveiller un autre ensemble de travaux, vous pouvez utiliser la méthode IPrinterQueueView ::SetViewRange pour ce faire.

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

L’extrait de code C# suivant illustre l’utilisation des nouvelles interfaces pour lancer 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 nom générique pour le mécanisme que vous développez pour afficher les informations à l’utilisateur.

Notez également que l’énumération du travail commence lorsque le premier gestionnaire d’événements est ajouté et qu’elle est arrêtée lorsque le dernier gestionnaire d’événements est supprimé.

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection