Freigeben über


V4-Treiber-UI-Architektur

Wichtig

Die moderne Druckplattform ist das bevorzugte Mittel von Windows, um mit Druckern zu kommunizieren. 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 Modern Print-Plattform und der Anleitung zum Design der Print-Support-App.

Ein wichtiges Ziel bei der Entwicklung der v4-Treiberarchitektur war die integrierte Unterstützung für die Benutzeroberfläche der Microsoft Store-App.

Die anwendungsbasierte Benutzeroberfläche, die wir verwenden, ist ein klares Beispiel dafür. UWP-Geräte-Apps bieten dem Benutzer ein Vollbild-Erlebnis, das von der Benutzeroberfläche der Microsoft Store-Apps unterstützt wird. UWP-Geräte-Apps zum Drucken bieten Erweiterungsmöglichkeiten für Druckeinstellungen und Druckbenachrichtigungen für Drucker, die den v4-Druckertreiber unterstützen. UWP-Geräte-Apps zum Drucken bieten auch Sichtbarkeit für das Druckgerät auf dem neuen Startbildschirm.

Drucker- Erweiterungs-Apps unterstützen Druckeinstellungen und Druckerbenachrichtigungen, wenn Benutzer bestehende Anwendungen auf dem Windows-Desktop ausführen. Die Benutzeroberflächen dieser Anwendungen sind zwar sehr unterschiedlich, da die eine für Touch-Bedienung und die andere für Maus- und Tastaturbenutzer optimiert ist, aber die Business-Logik und die Verbindung zu den v4-Druckertreibern können unabhängig von der Benutzeroberfläche immer noch ähnlich sein.

Das folgende Diagramm zeigt eine allgemeine Architektur der Microsoft Store-Geräte-Apps.

Überblick über die Benutzeroberflächen-Architektur.

Wie im vorangegangenen Diagramm dargestellt, ermöglicht die Modell/View/Controller-basierte Architektur den Anwendungen die gemeinsame Nutzung von in C# geschriebenem Code auf der Modellebene.

Erweitern von PrinterExtensionLibrary

Das Projekt PrinterExtensionLibrary, das in den verschiedenen Beispielen enthalten ist, kann durch neue Klassen oder durch die Erweiterung des mitgelieferten Klassensatzes erweitert werden. Da Microsoft den Beispielcode regelmäßig aktualisiert, empfehlen wir unseren Partnern, die Anzahl der Codeänderungen, die sie an den bereitgestellten Quelldateien vornehmen, zu minimieren. Für Partner, die den mitgelieferten Klassensatz erweitern, empfehlen wir, die vorhandenen Klassen als „partial“ zu markieren und neue Funktionen oder Überschreibungen in einer separaten Quelldatei hinzuzufügen.

Gemeinsame Nutzung kompilierter Binärdateien zwischen UWP-Anwendungen und Desktop-Anwendungen

Das Projekt PrinterExtensionLibrary, das in den Beispielen für die Microsoft Store-Geräte-App und die Drucker-Erweiterung enthalten ist, verwendet denselben Quellcode. Es kann jedoch sinnvoll sein, den Code so zu erstellen, dass er zwischen den Projekten portabel ist, ohne dass er für jedes Projekt separat erstellt werden muss. Um den Code für das Projekt PrinterExtensionLibrary portabel zu machen, müssen Sie das Projekt in eine Portable Class Library konvertieren. Für die Konvertierung führen Sie die folgenden Schritte aus.

  1. Klicken Sie in Microsoft Visual Studio auf File>New>Project und suchen Sie dann im Feld Search Installed Templates nach „Portable“.

  2. Wählen Sie Portable Class Library Visual C#, geben Sie einen Namen für das Projekt in das Textfeld Name ein und klicken Sie auf OK.

  3. Kopieren Sie den Quellcode aus Ihrem bestehenden PrinterExtensionLibrary-Projekt in das neue Projekt.

  4. Klicken Sie mit der rechten Maustaste auf Ihr Portable Class Library-Projekt und wählen Sie Unload. Öffnen Sie dann die .csproj-Datei und fügen Sie den folgenden Abschnitt zu Ihrer Datei hinzu, und zwar kurz vor dem letzten Tag im Dokument.

      <ItemGroup>
        <COMReference Include="PrinterExtensionLib">
          <Guid>{91CE54EE-C67C-4B46-A4FF-99416F27A8BF}</Guid>
          <VersionMajor>1</VersionMajor>
          <VersionMinor>0</VersionMinor>
          <Lcid>0</Lcid>
          <WrapperTool>tlbimp</WrapperTool>
          <Isolated>False</Isolated>
          <EmbedInteropTypes>True</EmbedInteropTypes>
        </COMReference>
      </ItemGroup>
    
  5. Wenn Sie aufgrund von COM-Referenzen Warnungen erhalten, fügen Sie dem <PropertyGroup>-Tag Folgendes hinzu:

<ResolveComReferenceSilent>true</ResolveComReferenceSilent>

API für Benutzeroberflächen-Szenarien zum Drucken

Als Teil des v4-Druckertreibermodells wurde eine API entwickelt, die Printer Extensions und UWP-Geräteanwendungen zum Drucken unterstützt. Im Großen und Ganzen verwendet das Szenario Druckeinstellungen PrintTicket, PrintCapabilities und die neuen Eigenschaftstaschen, um alle Informationen abzurufen und zu speichern. Die Druckerbenachrichtigungen werden von einem neuen Ereignissystem gesteuert, das auf dem Bidirectional Communication (Bidi) Schema basiert. Dieses neue System verwendet das AsyncUI-Protokoll zwischen Client und Server. Die datenzentrierte Natur dieser API bedeutet, dass eine Anwendung problemlos viele Geräte unterstützen kann.

Drucker-Erweiterungen müssen so aufgebaut sein, dass sie sich selbständig zurückentwickeln können, wenn die angeforderten Daten nicht mehr verfügbar sind. Wenn etwa eine bestimmte PrintCapabilities-Funktion nicht verfügbar ist oder eine Eigenschaft in einer der Eigenschaftstaschen nicht verfügbar ist, sollte dies nicht dazu führen, dass der Rest der App nicht mehr funktioniert. Wenn Sie auf Eigenschaftstaschen oder bestimmte Eigenschaften in einer Eigenschaftstasche zugreifen, sollte die Anwendung die try-catch-Syntax verwenden, um sicherzustellen, dass Ausnahmen, die ausgelöst werden, die Anwendung nicht zum Absturz bringen. Weitere Informationen finden Sie unter Drucker-Erweiterungsschnittstellen.

Drucker-Erweiterungsschnittstellen