Aracılığıyla paylaş


Özelleştirilmiş Kullanıcı Arabirimi için Sürücü Desteği

Önemli

Modern yazdırma platformu, Windows'un yazıcılarla iletişim kurmak için tercih ettiği araçlardır. Yazıcı cihazı geliştirme için Windows 10 ve 11'deki yazdırma deneyimini özelleştirmek için Yazdırma Desteği Uygulamaları (PSA) ile birlikte Microsoft'un IPP gelen kutusu sınıf sürücüsünü kullanmanızı öneririz.

Daha fazla bilgi için bkz. Yazdırma Desteği Uygulaması v1 ve v2 tasarım kılavuzu.

v4 yazdırma sürücüsü modeli, yazıcı uzantıları veya yazdırma için UWP cihaz uygulamaları kullanılarak kullanıcı arabirimi özelleştirmesi için yerleşik destekle geliştirilmiştir.

Kullanıcı arabirimi özelleştirme tasarımında dikkat edilmesi gereken diğer noktalar aşağıdaki bölümlerde açıklanmıştır.

Tüm v4 yazdırma sürücüleri yazdırma tercihleriyle çalışır, ancak tüm senaryolarda en yüksek tutarlılığı sağlamak için yapılandırma ve kullanıcı arabirimi katmanları arasındaki sınırları korumak önemlidir. Yüklü yazıcı uzantısı veya UWP cihaz uygulaması olmadığından veya bunlar otomatik olarak yüklenmiş olabileceğinden, v4 yazdırma sürücülerinin özelleştirilmiş yazıcı tercihleri deneyimi olmadan yazdırma sürücülerinin işlevsel olduğundan emin olması gerekir. Özellikle bu, PrintTicket ve PrintCapabilities desteğinin sürücüdeki GPD/PPD + JavaScript kısıtlamaları uygulamasında eksiksiz ve kapsamlı olması gerektiği anlamına gelir.

Yazıcı uzantısında veya UWP cihaz uygulamasında bazı kısıtlama doğrulamaları, son derece bilgilendirici ve etkileşimli bir deneyim sağlama açısından yararlı olabilir, ancak yetkili olarak kabul edilen sürücünün doğrulamasının yerini almamalıdır.

Yazıcı uzantıları ve UWP cihaz uygulamaları, bir ağ kaynağına doğrudan ağ çağrıları yapmak yerine IPrinterQueue::SendBidiQuery yöntemini kullanmalıdır. Bir ağ kaynağıyla bağlantı kurulması gerekiyorsa, kullanıcı arabiriminin kilitlenmesini önlemek için başka bir iş parçacığında veya zaman uyumsuz olarak yapılmalıdır. Gelecekteki çağrıları daha hızlı yapmak için veriler alındıktan sonra önbelleğe alınmalıdır.

Yazıcı Bildirimleri

Yazıcı bildirimleri, Bidi ve DriverEvent XML dosyası tarafından yönlendirilir. Ancak pil ömrünü daha iyi yönetmek ve kesintileri en aza indirmek için bildirimler yalnızca bir kullanıcı yazdırırken gösterilir.

Yazdırma tercihleri, yazdıran uygulama için bağlamsal olsa da yazıcı bildirimleri değildir. Aşağıdaki akış grafiğinde, Windows'un yazıcı bildirimlerinin davranışını belirlemek için kullandığı karar ağacı açıklanmaktadır. Varsa, UWP cihaz uygulamaları yazıcı uzantılarına göre önceliklidir.

yazıcı bildirim davranışı akış çizelgesi

GetForegroundWindow 'çağırarak Windows 8 ortamında bildirim göstermek için özel bir kullanıcı arabirimi kullanmaya çalışırsanız bildirim penceresinin görüntülenmeyeceğini bilmeniz önemlidir. Bunun nedeni, işletim sisteminin GetForegroundWindow kullanarak ön plan penceresi oluşturan iş parçacığına daha yüksek bir öncelik atamaya çalışmasıdır ve Windows 8 ortamındaki iletişim kutuları için buna izin verilmez. Windows 8 ortamında bildirim görüntülemek için özel bir kullanıcı arabirimi kullanmak istiyorsanız, getDesktopWindow arayarak bunu yapmanız gerekir.

Sürücü Olayları Oluşturma. V4 yazdırma sürücüleri, Bidi sorgularını ve bir sürücü olayının tetiklenmesine neden olması gereken tetikleyicileri açıklamak için Bir DriverEvent XML dosyası kullanır. Ayrıca sürücü olaylarının yalnızca standart dizeleri desteklediğini unutmayın. Standart dizeler hakkında daha fazla bilgi için bkz. AsyncUI Varsayılan Kaynak Dosyası Dizesi Kaynakları . Geçerli uygulamada bu, AsyncUIBalloon iletisinin MS-PAN protokolükullanılarak oluşturulmasına ve yayımlanmasına neden olur. Bu uygulama gelecekte performansı geliştirmek için değişebilir, bu nedenle v4 yazdırma sürücünüzü temel alınan protokole bağımlılık almeyecek şekilde geliştirmeniz çok önemlidir.

Aşağıdaki diyagramda protokol kullanımı gösterilmektedir.

protokolü kullanımı sürücü olaylarıyla.

Sürücü Olayı XML Örneği. Aşağıdaki XML kod parçacığı bir sürücü olayı belirtir. Etkinlik, Bidi tarafından bildirilen toplam kapasitenin 21%'dan daha az olması durumunda sarı mürekkebin kontrol edilip edilmediğini denetler. Bu durum meydana gelirse, resourceID 132 ile referans verilen dizeyle bir AsyncUIBalloon iletisi oluşturulur. Başka bir deyişle, iletide "'%1' toner/mürekkep yetersiz" ifadesi yer alır. Burada Kaynak 2002 ("Sarı"), yerine %1kullanılır.

<de:DriverEvents xmlns:de="https://schemas.microsoft.com/windows/2011/08/printing/driverevents" schemaVersion="4.0">
  <DriverEvent eventId="{A04CF0FC-1CEB-4C62-B967-6F0AE5C5F81E}">
    <Transport>USB</Transport>
    <Transport>WSD</Transport>
    <Query>\Printer.Consumables</Query>
    <Trigger result="\Printer.Consumables.Yellow:Level" comparison="LessThan" value="21">
      <StandardMessage resourceId="132">
        <StringParameter index="1" resourceId="2002" />
      </StandardMessage>
    </Trigger>
  </DriverEvent>
</de:DriverEvents>

Sürücü Olay Şeması. DriverEvent şeması, Windows Sürücü Seti'nde \Include\um\PrinterDriverEvents.xsd olarak kullanılabilir.

Sürücü Olayı XML Doğrulama. DriverEvent XML'nizi sürücü bildiriminde düzgün şekilde tanımladığınız sürece, XML dosyası INFGate aracı tarafından otomatik olarak doğrulanır.

AsyncUIBalloon

AsyncUI Varsayılan Kaynak Dosyası Dizesi Kaynakları

IPrinterQueue::SendBidiQuery

MS-PAN protokol