Página 1 de 1

Saber quando é LPT1 ou USB???

Enviado: 01 Mar 2008 19:01
por ERASMO ANDRIOLI
Amigos... Companheiros das horas de folga...

Me opinem sobre o seguinte: POSTEM FONTES EXEMPLOS

Se tenho um cliente que vai mandar imprimir um relatorio, e ele tem um printer matricial....

Como configurar o fonte .prg para ler o tipo de impressora (lpt, usb) para que a impressao ocorra de maneira satisfatoria?

Quero usar assim:
- para usb: WIN32PRN
- para lpt1: PRINTFILERAW

Na verdade quero mandar imprimir um arquivo .prn já pronto (EXTRATO.PRN)... creio que os amigos sabem que o Harbour necessitara nesse caso de parametros (que devem ser passados) do tipo de impressora a ser usada e do arquivo a ser impresso.

Se possivel passem um modelo de fonte bem facil de entender.

Obrigado...

Erasmo. :P

Enviado: 01 Mar 2008 20:50
por Hasse
Erasmo.

O exemplo abaixo foi tirado de:
https://pctoledo.org/forum/viewtopic.php?t=6465

Este exemplo possui quase todos os recursos que normalmente são usados. Você poderia pegar aquele código, compilar e ver os resultados. O código está bem comentado e é de fácil interpretação.

O exemplo abaixo permite escolher a impressoras entre todas aquelas que estiverem devidamente instaladas, inclusive as instaladas em portas USB, e também as de rede.

Código: Selecionar todos

FUNCTION Main() 
  LOCAL nPrn:=1 
  LOCAL aPrn:= GetPrinters() 
  CLS 
  IF EMPTY(aPrn) 
    Alert("No printers installed - Cannot continue") 
    QUIT 
  ENDIF 
  DO WHILE !EMPTY(nPrn) 
    CLS 
    @ 0,0 SAY 'Programa de teste Classe WIN32PRN(). Escolha uma impressora. ESC' +; 
              ' para sair.' 
    @ 1,0 TO maxRow(),maxCol() 
    nPrn:= ACHOICE(2,1,maxRow()-1,maxCol()-1,aPrn,.T.,,nPrn) 
    IF !EMPTY(nPrn) 
      PrnTest(aPrn[nPrn]) 
    ENDIF 
  ENDDO 
  * 
  @ 22,00 say "" 
  RETURN(NIL) 
Se você tem impressoras de nomes conhecidos, podes eliminar este código acima, e informar o nome dela, tipo:


Código: Selecionar todos

PrnTest("Epson Stylus Color")
........
........
........
STATIC FUNCTION PrnTest(cPrinter) 
   LOCAL oPrinter:= WIN32PRN():New(cPrinter), aFonts, x, nColFixed, ColTTF, nColCharSet, aForms 

Enviado: 09 Mar 2008 14:07
por sygecom
De uma consultada no HELP do xharbour que tem a função "GetPrinters( .T. )" que retorna 4 elementos sendo que o segundo é o nome da porta.

Impressora Padrão do windows

Enviado: 09 Mar 2008 16:40
por ronnimadeira
Existe algum recurso que ele consiga mostra qual a impressora padrão do windows?

Enviado: 09 Mar 2008 16:42
por sygecom

Código: Selecionar todos

GetDefaultPrinter() 

impr usb ou nao

Enviado: 25 Mar 2008 08:51
por paiva
BOA, quando precisei saber se era usb ou NAO, ate consegui + parece que so se for LOCAL a impressora em REDE parece que NAO é possivel OU eu NAO conseegui entao fiz uma tabela no sistema que informo uma IDENTIFICACAO da IMPRESSORA e se ela e´USB faço isso somente para as USB

PAiva

Enviado: 25 Mar 2008 09:32
por alaminojunior
Muito simples, é só renomear, adicionando a interface ao nome.

Enviado: 26 Mar 2008 13:26
por sygecom
Paiva, se vc esta usando o comando "GetPrinters(.t.)" para pegar a lista de impressora, ai tera problemas pq com o .t. na função ele só pega as impressora local, se deixar sem nd, ele pega todas que tiverem instalada no micro.

Enviado: 04 Abr 2008 08:31
por Wanderlei
Olha Pessoal eu estou usando esta função para pegar a porta tanto local como de rede.

FUNCTION SelectPrinter()
LOCAL nPrn:=1
LOCAL aPrn:= GetPrinters(.t.)
IF EMPTY(aPrn)
wvw_messagebox(,"Não foi encontrada nenhuma Impressora Instalada!",48)
Return
ENDIF
DO WHILE !EMPTY(nPrn)
Setcolor("N/W")
WVW_nOpenWindow("Escolha uma impressora",2,1,10,40)
nPrn:= ACHOICE(2,1,10,40,getprinters(),.T.,,nPrn)
IF nPrn == 0
exit
ENDIF
wvw_messagebox(aPrn[nPrn][2],64)
wvw_lclosewindow()
ENDDO
RETURN(NIL)

Wanderlei
:|<