Imprimir um ficheiro em C - C - Portugal-a-Programar
Imprimir um ficheiro em C
Por darkeyes, 7 de Julho de 2009 em C
Boa tarde, não consigo descobrir como imprimir atraves de um programa em C um ficheiro .txt, utilizando Windows e a impressora ser liga atraves de porta USB. Ideas?
system("print /d:%s /t drive:\%s\%s /c/p",&impressora,&caminho,&ficheiro);
se me enganei em alguma coisa, aqui: http://www.computerhope.com/printhlp.htm tem a formalização do comando print. Não vale a pena estares a usar API's para uma coisa tão simples (digo eu que é simples).
tenho de colocar caminho para o .inf da minha impressora?
Já agora é uma HP e não o consigo encontrar :S
drive != driver
é algo do género C:\ficheiro.txt
Já agora, é preciso usar barras duplas ( \\ ) em paths em strings C.
eu queria dizer em,
/d:%s
em que seria,
Name of printer device
Printer Ports: LPT1, LPT2 orLPT3
Serial Ports: Com1, Com2, Com3 or Com4
Isso vês nas propriedades da impressora. Estou no Windows 7, mas há-de ser algo deste género:
Ao executar o comando,
print /d:USB001 /t c:\teste.txt /c/p
na linha de comandos, ele retorna-me
"O comutador T/: não esta implementado"
Até pode ser uma chamada da janela que me permite escolher a impressora, isso teria de ser feito em API certo?
my bad... :-[
se estás a falar da janela do Windows para configurar a impressora, julgo que não. Tenta só isto:
print /d:USB001 c:\teste.txt /c
EDIT: após pesquisar, tens mesmo de fazer através da API do Windows. A maneira que o OldCoder mostrou em baixo é a mais fácil.
Para mim, o mais simples é confiar na Shell do Windows (presumo que seja em Windows que desejas imprimir o .txt) para estas tarefas comuns. Maior parte dos tipos de documentos que existem podem ser impressos (incluindo .txt, obviamente) por uma chamada de sistema. Podes delegar ao Windows essa tarefa, fazendo uma chamada de ShellExecute(...), em que a acção desejada é "print".
Tens a referência completa do ShellExecute aqui:
Primeiro link para "ShellExecute" dado pelo bing.
void ImprimirFicheiro(char *ficheiro, char *directoria)
ShellExecute(NULL,"Print",ficheiro,"",directoria,SW_SHOWDEFAULT);
Não tive tempo para verificar este código (por exemplo, pode ser que tenhas que usar "Imprimir" em vez de "Print"), mas já tens o suficiente para começar a tirar partido da Shell API.
Se bem que se recomenda que aprofundes o teu conhecimento da Win32API.
Muito obrigado a todos pela atenção, já consegui. Agora que estive a ler, o ShellExecute não permite abrir apenas a janela de impressão, imprimindo para a impressora predefinida, sendo então impossível escolher a impressora que quero utilizar.