Udostępnij za pośrednictwem


Obsługa sterowników dla dostosowanego interfejsu użytkownika

Ważny

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zobacz przewodnik projektowania aplikacji wspierających druk .

Model sterownika wydruku w wersji 4 został opracowany z wbudowaną obsługą dostosowywania interfejsu użytkownika przy użyciu rozszerzeń drukarek lub aplikacji urządzeń platformy UWP do drukowania.

Więcej zagadnień dotyczących projektowania dostosowywania interfejsu użytkownika opisano w poniższych sekcjach.

Wszystkie sterowniki wydruku w wersji 4 współpracują z preferencjami drukowania, jednak ważne jest zachowanie granic między warstwami konfiguracji i interfejsu użytkownika w celu zapewnienia maksymalnej spójności we wszystkich scenariuszach. Ponieważ mogą nie być zainstalowane żadne rozszerzenia drukarki lub aplikacje urządzeń platformy UWP lub zostały zainstalowane automatycznie, sterowniki wydruku w wersji 4 muszą upewnić się, że sterowniki wydruku działają bez dostosowanego środowiska preferencji drukarki. W szczególności oznacza to, że obsługa PrintTicket i PrintCapabilities powinna być pełna i kompleksowa w implementacji ograniczeń GPD/PPD + JavaScript w sterowniku.

Walidacja ograniczeń w rozszerzeniu drukarki lub aplikacji urządzenia platformy UWP może być przydatna, aby zapewnić wysoce informacyjne i interaktywne środowisko, ale nie powinna zastępować walidacji sterownika, która jest uważana za autorytatywną.

Rozszerzenia drukarek i aplikacje urządzeń platformy uniwersalnej systemu Windows powinny używać metody IPrinterQueue::SendBidiQuery zamiast bezpośrednich połączeń z zasobami sieciowymi. Jeśli należy skontaktować się z zasobem sieciowym, należy go wykonać w innym wątku lub asynchronicznie, aby zapobiec zawieszaniu się interfejsu użytkownika. Dane powinny być buforowane po ich pobraniu w celu przyspieszenia przyszłych wywołań.

Powiadomienia drukarki

Powiadomienia drukarki są sterowane przez bidi i przez plik XML DriverEvent. Aby lepiej zarządzać żywotność baterii i zminimalizować przerwy, powiadomienia będą wyświetlane tylko wtedy, gdy użytkownik drukuje.

Podczas gdy preferencje drukowania są kontekstowe dla aplikacji, która drukuje, powiadomienia związane z drukarką nie są. Poniższy wykres blokowy wyjaśnia drzewo decyzyjne używane przez system Windows do określania zachowania powiadomień drukarki. Jeśli są dostępne, aplikacje UWP mają pierwszeństwo przed rozszerzeniami drukarek.

diagram blokowy zachowania powiadomień drukarki.

Należy pamiętać o tym, że jeśli spróbujesz użyć niestandardowego interfejsu użytkownika, aby wyświetlić powiadomienie w środowisku systemu Windows 8, wywołując GetForegroundWindow, okno powiadomień nie będzie wyświetlane. Dzieje się tak, ponieważ system operacyjny próbuje przypisać wyższy priorytet do wątku, który tworzy okno pierwszego planu przy użyciu polecenia GetForegroundWindow, i nie jest to dozwolone w oknach dialogowych w środowisku systemu Windows 8. Jeśli chcesz użyć niestandardowego interfejsu użytkownika do wyświetlania powiadomienia w środowisku systemu Windows 8, musisz to zrobić, wywołując GetDesktopWindow.

Tworzenie Zdarzeń Sterowników. Sterowniki wydruku w wersji 4 używają pliku XML DriverEvent do opisywania zapytań Bidi i wyzwalaczy, które powinny spowodować zgłoszenie zdarzenia sterownika. Należy pamiętać, że zdarzenia sterowników obsługują tylko standardowe ciągi. Aby uzyskać więcej informacji na temat ciągów standardowych, zobacz AsyncUI Default Resource File String Resources. W bieżącej implementacji spowoduje to utworzenie i opublikowanie komunikatu AsyncUIBalloon przy użyciu protokołu MS-PAN. Ta implementacja może ulec zmianie w przyszłości, aby poprawić wydajność, dlatego kluczowe jest opracowanie sterownika wydruku w wersji 4, tak aby nie uwzględniało zależności od protokołu bazowego.

Na poniższym diagramie przedstawiono wykorzystanie protokołu.

użycie protokołu ze zdarzeniami sterowników.

przykład xml zdarzenia sterownika . Poniższy fragment kodu XML określa jedno zdarzenie sterownika. Zdarzenie sprawdza, czy żółty tusz jest mniejszy niż 21% całkowitej pojemności tuszu zgłoszonej przez Bidi. W takim przypadku tworzy się komunikat AsyncUIBalloon z ciągiem znaków związanym z identyfikatorem resourceID 132. Innymi słowy, komunikat brzmiałby, że „%1” ma mało tonera/atramentu, zamiast zasobu 2002 („Żółty”), użyto by %1.

<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>

schematu zdarzeń sterownika. Schemat DriverEvent jest dostępny w zestawie sterowników systemu Windows jako \Include\um\PrinterDriverEvents.xsd.

Weryfikacja poprawności XML dla zdarzenia sterownika. Tak długo, jak poprawnie opisujesz kod XML DriverEvent w manifeście sterownika, plik XML jest automatycznie weryfikowany przez narzędzie INFGate.

AsyncUIBalloon

Domyślne zasoby tekstowe pliku zasobów AsyncUI

IPrinterQueue::SendBidiQuery

MS-PAN protokołu