Compartir a través de


Compatibilidad con controladores para la interfaz de usuario personalizada

Importante

Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte la guía de diseño de aplicaciones de soporte técnico de impresión.

El modelo de controlador de impresión v4 se desarrolló con compatibilidad integrada para la personalización de la interfaz de usuario mediante extensiones de impresora o aplicaciones de dispositivos para UWP para imprimir.

En las secciones siguientes se describen más consideraciones de diseño de personalización de la interfaz de usuario.

Sin embargo, todos los controladores de impresión v4 funcionan con preferencias de impresión; sin embargo, es importante mantener los límites entre las capas de configuración y de interfaz de usuario para garantizar la máxima coherencia en todos los escenarios. Dado que es posible que no haya extensiones de impresora o aplicaciones de dispositivo UWP instaladas o que se hayan instalado automáticamente, los controladores de impresión v4 deben asegurarse de que los controladores de impresión son funcionales sin una experiencia de preferencias de impresora personalizada. En concreto, esto significa que la compatibilidad con PrintTicket e PrintCapabilities debe ser completa y completa en la implementación de restricciones GPD/PPD + JavaScript en el controlador.

Algunas validaciones de restricciones en la extensión de impresora o la aplicación de dispositivo para UWP pueden resultar útiles en términos de proporcionar una experiencia interactiva altamente informativa, pero no debe reemplazar la validación del controlador, que se considera autoritativa.

Las extensiones de impresora y las aplicaciones de dispositivos para UWP deben usar el método IPrinterQueue::SendBidiQuery en lugar de realizar llamadas de red directas a un recurso de red. Si se debe ponerse en contacto con un recurso de red, se debe realizar en otro subproceso o de forma asincrónica para evitar que la interfaz de usuario se bloquee. Los datos se deben almacenar en caché después de recuperarlos para que las llamadas futuras sean más rápidas.

Notificaciones de impresora

Las notificaciones de impresora están controladas por Bidi y por el archivo XML driverEvent. Para administrar mejor la duración de la batería y minimizar las interrupciones, sin embargo, las notificaciones solo se mostrarán cuando un usuario esté imprimiendo.

Aunque las preferencias de impresión son contextuales para la aplicación que está imprimiendo, las notificaciones de impresora no. En el siguiente diagrama de flujo se explica el árbol de decisión que Windows usa para determinar el comportamiento de las notificaciones de impresora. Si está disponible, las aplicaciones de dispositivos para UWP tienen prioridad sobre las extensiones de impresora.

diagrama de flujo de comportamiento de notificación de impresora.

Es importante tener en cuenta que, si intenta usar una interfaz de usuario personalizada para mostrar una notificación en el entorno de Windows 8 mediante una llamada a GetForegroundWindow, no se mostrará la ventana de notificación. Esto se debe a que el sistema operativo intenta asignar una prioridad más alta al subproceso que crea una ventana en primer plano mediante GetForegroundWindow y esto no se permite para los cuadros de diálogo en el entorno de Windows 8. Si desea usar una interfaz de usuario personalizada para mostrar una notificación en el entorno de Windows 8, debe hacerlo mediante una llamada a GetDesktopWindow.

Crear eventos de controlador. Los controladores de impresión V4 usan un archivo XML DriverEvent para describir las consultas Bidi y los desencadenadores que deben provocar un evento de controlador. Y es importante tener en cuenta que los eventos de controlador solo admiten cadenas estándar. Para obtener más información sobre las cadenas estándar, vea AsyncUI Default Resource File String Resources. En la implementación actual, esto hará que se cree y publique un mensaje AsyncUIBalloon mediante el protocolo MS-PAN. Esta implementación puede cambiar en el futuro para mejorar el rendimiento, por lo que es fundamental desarrollar el controlador de impresión v4 para que no tome dependencias en el protocolo subyacente.

En el diagrama siguiente se muestra el uso del protocolo.

uso del protocolo con eventos de controlador.

Ejemplo XML de evento de controlador. El siguiente fragmento de código XML especifica un evento de controlador. El evento comprueba que la tinta amarilla sea inferior al 21 % de la capacidad total, según lo indicado por Bidi. Si esto ocurre, se crea un mensaje AsyncUIBalloon con la cadena a la que hace referencia resourceID 132. En otras palabras, el mensaje diría que "'%1' es bajo en tóner/entrada de lápiz". Donde Recurso 2002 ("Amarillo"), se sustituiría por %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>

Esquema de eventos de controlador. El esquema DriverEvent está disponible en el Kit de controladores de Windows como \Include\um\PrinterDriverEvents.xsd.

Validación XML del evento de controlador. Siempre que describa el XML driverEvent correctamente en el manifiesto del controlador, la herramienta INFGate valida automáticamente el archivo XML.

AsyncUIBalloon

Recursos de cadena de archivo de recursos predeterminados de AsyncUI

IPrinterQueue::SendBidiQuery

Protocolo MS-PAN