Freigeben über


Treiberunterstützung für angepasste UI

Wichtig

Die moderne Druckplattform ist die bevorzugte Methode von Windows für die Kommunikation mit Druckern. Wir empfehlen die Verwendung des Microsoft IPP-Treibers für die Posteingangsklasse zusammen mit Print Support Apps (PSA), um das Druckverhalten in Windows 10 und 11 für die Entwicklung von Druckergeräten anzupassen.

Weitere Informationen finden Sie unter Moderne Druckplattform und im Designhandbuch für die Drucksupport-App.

Das v4-Drucktreibermodell wurde mit integrierter Unterstützung für die Anpassung der Benutzeroberfläche mithilfe von Druckererweiterungen oder UWP-Geräte-Apps für das Drucken entwickelt.

Weitere Entwurfsüberlegungen zur Anpassung der Benutzeroberfläche werden in den folgenden Abschnitten beschrieben.

Alle v4-Drucktreiber funktionieren jedoch mit Druckeinstellungen, es ist jedoch wichtig, die Grenzen zwischen den Konfigurations- und UI-Ebenen beizubehalten, um eine maximale Konsistenz in allen Szenarien sicherzustellen. Da möglicherweise keine Druckererweiterungen oder UWP-Geräte-Apps installiert sind oder sie automatisch installiert wurden, müssen v4-Drucktreiber sicherstellen, dass die Drucktreiber ohne benutzerdefinierte Druckereinstellungen funktionsfähig sind. Dies bedeutet insbesondere, dass die PrintTicket- und PrintCapabilities-Unterstützung in der GPD/PPD + JavaScript-Einschränkungsimplementierung im Treiber vollständig und umfassend sein sollte.

Einige Einschränkungsüberprüfungen in der Druckererweiterung oder UWP-Geräte-App könnten hilfreich sein, um eine sehr informative, interaktive Oberfläche bereitzustellen, aber sie sollte die Überprüfung des Treibers nicht ersetzen, die als autoritativ betrachtet wird.

Druckererweiterungen und UWP-Geräte-Apps sollten die IPrinterQueue::SendBidiQuery-Methode anstelle von direkten Netzwerkaufrufen an eine Netzwerkressource verwenden. Wenn eine Netzwerkressource kontaktiert werden muss, sollte sie auf einem anderen Thread oder asynchron erfolgen, um zu verhindern, dass die Benutzeroberfläche hängen bleibt. Daten sollten zwischengespeichert werden, nachdem sie abgerufen wurden, um zukünftige Anrufe schneller zu tätigen.

Druckerbenachrichtigungen

Druckerbenachrichtigungen werden von Bidi und der DriverEvent-XML-Datei gesteuert. Um die Akkulaufzeit besser zu verwalten und Unterbrechungen zu minimieren, werden Benachrichtigungen jedoch nur angezeigt, wenn ein Benutzer druckt.

Während Druckeinstellungen kontextbezogen mit der Druck-App sind, sind Druckerbenachrichtigungen nicht vorhanden. Das folgende Flussdiagramm erläutert die Entscheidungsstruktur, die Windows verwendet, um das Verhalten von Druckerbenachrichtigungen zu bestimmen. Wenn verfügbar, haben UWP-Geräte-Apps Vorrang vor Druckererweiterungen.

Flussdiagramm des Druckerbenachrichtigungsverhaltens.

Es ist wichtig zu wissen, dass, wenn Sie versuchen, eine benutzerdefinierte Benutzeroberfläche zum Anzeigen einer Benachrichtigung in der Windows 8-Umgebung zu verwenden, indem Sie GetForegroundWindow aufrufen, das Benachrichtigungsfenster nicht angezeigt werden. Dies liegt daran, dass das Betriebssystem versucht, dem Thread eine höhere Priorität zuzuweisen, die ein Vordergrundfenster mit GetForegroundWindow erstellt, und dies ist für Dialogfelder in der Windows 8-Umgebung nicht zulässig. Wenn Sie eine benutzerdefinierte Benutzeroberfläche verwenden möchten, um eine Benachrichtigung in der Windows 8-Umgebung anzuzeigen, müssen Sie dazu GetDesktopWindow aufrufen.

Erstellen von Treiberereignissen. V4-Drucktreiber verwenden eine DriverEvent-XML-Datei, um Bidi-Abfragen und die Trigger zu beschreiben, die dazu führen sollten, dass ein Treiberereignis ausgelöst wird. Und es ist wichtig zu beachten, dass Treiberereignisse nur Standardzeichenfolgen unterstützen. Weitere Informationen zu Standardzeichenfolgen finden Sie unter AsyncUI Default Resource File String Resources. In der aktuellen Implementierung bewirkt dies, dass eine AsyncUIBalloon-Nachricht mit dem MS-PAN-Protokoll erstellt und veröffentlicht wird. Diese Implementierung kann sich in Zukunft ändern, um die Leistung zu verbessern. Daher ist es wichtig, Ihren v4-Drucktreiber so zu entwickeln, dass es keine Abhängigkeiten vom zugrunde liegenden Protokoll übernimmt.

Das folgende Diagramm zeigt die Protokollverwendung.

Protokollverwendung mit Treiberereignissen.

Beispiel für Treiberereignis-XML. Der folgende XML-Codeausschnitt gibt ein Treiberereignis an. Das Ereignis überprüft, ob gelbe Tinte weniger als 21 % der Gesamtkapazität beträgt, wie von Bidi gemeldet. In diesem Fall wird eine AsyncUIBalloon-Nachricht mit der Zeichenfolge erstellt, auf die von resourceID 132 verwiesen wird. Mit anderen Worten würde die Meldung lauten: „Der Toner-/Tintenstand von ‚%1‘ ist niedrig“, wobei %1 durch die Ressource 2002 („Gelb“) ersetzt würde.

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

Treiberereignisschema. Das DriverEvent-Schema ist im Windows Driver Kit als \Include\um\PrinterDriverEvents.xsd verfügbar.

Treiberereignis XML-Überprüfung. Solange Sie Ihren DriverEvent-XML im Treibermanifest ordnungsgemäß beschreiben, wird die XML-Datei automatisch vom INFGate-Tool überprüft.

AsyncUIBalloon

AsyncUI Default Resource File String Resources

IPrinterQueue::SendBidiQuery

MS-PAN-Protokoll