共用方式為


作業管理

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

Windows 8.1和更新版本的 Windows 中引進了作業管理功能,以提供作業佇列的即時檢視。

此功能也允許用戶端取消列印作業。 用戶端可以從 UWP 裝置應用程式內或印表機擴充功能呼叫適當的程式設計介面。

新的介面

Windows 8.1引進下列介面,以實作作業管理功能。

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection

起始作業管理會話

若要起始作業管理會話,您必須先指定並要求您想要管理的工作範圍。 此範圍的作業稱為「檢視」,而您使用 IPrinterQueue2::GetPrinterQueueView 方法來指定它。

如果您想要變更檢視來監視一組不同的作業,您可以使用 IPrinterQueueView::SetViewRange 方法來執行此動作。

請注意,列印佇列是動態佇列。 因此,每次列印佇列的狀態變更時,都會引發事件,而且 IPrinterQueueViewEvent::OnChanged 方法會提供所要求檢視的更新快照集。

下列 C# 代碼段說明如何使用新的介面來起始作業管理會話。

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 會針對您為向使用者顯示資訊而開發的機制使用泛型名稱。

此外,請注意,作業列舉會在新增第一個事件處理程式時啟動,並在移除最後一個事件處理程式時停止。

IPrinterQueue2

IPrinterQueueView

IPrinterQueueViewEvent

IPrintJob

IPrintJobCollection