Pregunta

Quiero escribir una aplicación en C ++ o C # que se comportará como un controlador de impresora cuando esté instalado. Estará disponible en la lista desplegable del cuadro de diálogo Imprimir, pero en lugar de imprimir, llamará a mi código.

Creo que puede haber algunas interfaces que Windows proporciona para escribir controladores de impresora.

¿Fue útil?

Solución

Windows proporciona muchas interfaces. ¿Sabes qué tipo de controlador de impresora quieres escribir? En la actualidad, Windows admite tres tipos de controladores de impresora: PostScript, Unidrv y XPSDrv (este último en el servidor XP / 2003 con EP 1.0 y versiones posteriores solamente). La mayoría de las veces, es suficiente escribir un complemento de controlador. Lea sobre la arquitectura INF para saber cómo se instalan estas cosas, especialmente la sección sobre minidrivers.

Como se sugiere, necesitará el WDK para poder construir un controlador o un complemento del mismo. Tenga en cuenta que los controladores no utilizan el IDE de Visual Studio o los compiladores. El WDK viene con un compilador propio. Siempre puedes conectar este último con VS, pero esa es una historia diferente.

El WDK tiene configuraciones para apuntar a diferentes sistemas operativos. Tendrá que saber qué sistema operativo (o conjunto de sistemas operativos) desea abordar y elegir la configuración adecuada.

  

Quiero escribir un controlador simple que se mostrará en la lista de impresoras.

No veo cómo eso será útil. Si está escribiendo un controlador, ¿por qué desea una lista de todos los demás controladores presentes en el sistema?

  

Imprimir en este controlador llamará a mi código para que pueda hacer cosas como crear un PDF del documento, llamar al servicio web, etc.

¡Interesante! Puede lograr todas esas cosas en un complemento de UI. Un complemento de UI es un dll que se carga cuando selecciona las propiedades del controlador Advanced .

Para comenzar con los complementos de IU, eche un vistazo al código fuente de oemui de muestra en el WDK.

Otros consejos

No estoy seguro de que se muestre en la lista, pero nunca he probado este código C ++:

#include <fstream>
Namespace Drivers{
Class Printer{
Const IOStream Printer("PRN");
Void Send(char a[]){
Printer<<a;}
Char GetStatus[](){
Char a[];
Printer>>a; 
return a;
 };
 }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top