• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

darkeyes

Imprimir um ficheiro em C

11 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

system("print /d:%s /t drive:\%s\%s /c/p",&impressora,&caminho,&ficheiro);

Em,

drive:\

tenho de colocar caminho para o .inf da minha impressora?

Já agora é uma HP e não o consigo encontrar :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

drive != driver

é algo do género C:\ficheiro.txt

Já agora, é preciso usar barras duplas ( \\ ) em paths em strings C.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

my bad,

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso vês nas propriedades da impressora. Estou no Windows 7, mas há-de ser algo deste género:

printer.png

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até pode ser uma chamada da janela que me permite escolher a impressora, isso teria de ser feito em API certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, é preciso usar barras duplas ( \\ ) em paths em strings C.

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até pode ser uma chamada da janela que me permite escolher a impressora, isso teria de ser feito em API certo?

Exacto.

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. :P

E um exemplo:

#include <windows.h>
#include <shellapi.h>

// ...

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. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

Quem chamada tenho de fazer para conseguir tal operação?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora