다음을 통해 공유


작업 관리

Important

최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.

자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.

작업 큐의 라이브 보기를 제공하기 위해 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