Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

darkeyes

Imprimir um ficheiro em C

Mensagens Recomendadas

darkeyes    0
darkeyes

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
darkeyes    0
darkeyes

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
darkeyes    0
darkeyes

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
darkeyes    0
darkeyes

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"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Metaluim    0
Metaluim

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
OldCoder    0
OldCoder

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
darkeyes    0
darkeyes

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?

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade