Pergunta

Eu quero escrever uma aplicação em C ++ ou C # que se comportará como um driver de impressora quando instalado. Ele estará disponível na lista suspensa na caixa de diálogo de impressão, mas em vez de imprimir ele vai chamar em meu código.

Eu acho que pode haver algumas interfaces que o Windows fornecer para drivers de impressora escrita.

Foi útil?

Solução

Windows fornece cargas de interfaces. Sabe que tipo de um driver de impressora que você quer escrever? Neste momento, o Windows suporta três sabores de drivers de impressora - PostScript, Unidrv e XPSDrv (este último em XP / 2003 Server com o EP 1.0 e para cima apenas). Na maioria das vezes, é suficiente para escrever um plug-in driver vez. Leia-se sobre arquitetura INF saber essas coisas são instalados, especialmente a seção sobre minidrivers.

Como sugerido, você vai precisar do WDK para ser capaz de construir um driver ou um plug-in do mesmo. Note-se que os motoristas não utilizar o Visual Studio IDE ou compiladores. O WDK vem com um compilador próprio. Você pode sempre ligar o último com VS, mas isso é uma história diferente.

O WDK tem configurações para atingir diferentes OS-es. Você terá que saber qual sistema operacional (ou conjunto de OS-es) que deseja endereço e escolher a configuração adequada.

Eu quero escrever um driver simples que é exibido na lista de impressoras.

Eu não vejo como isso vai ser útil. Se você estiver escrevendo um motorista, por que você quer uma lista de todos os outros pilotos presentes no sistema?

Impressão a esse motorista vai pôr em meu código para que eu possa fazer coisas como criar um PDF do documento, chamar o Serviço Web etc.

Interessante! Você pode conseguir todas essas coisas em uma interface plug-in. Uma interface plug-in é um DLL que é carregada quando você selecionar as propriedades do driver Advanced.

Para começar com o UI plug-ins dar uma olhada no código fonte oemui amostra no WDK.

Outras dicas

Eu não tenho certeza sobre isso para ser exibido na lista, mas eu nunca tentei 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top