Página 2 de 3

não consigo acessar matricial pelo net use no Windows 7

Enviado: 19 Nov 2014 14:54
por rubens
VocÊ está tentando imprimir do win7 para o win7? Ou do win7 para server 2008?

Bom se não for também fica a dica quem tiver problemas no futuro.

Voce tem que desabilitar a segurança da pasta
C:\Windows\System32\spool\PRINTERS


Já passei por este problema... do xp para o win7 vai blz. do Win7 para o xp também... mas quando é win7/win7 ou win7/Server2008 aí o bicho pega.

Faz esse teste aí. Abre a pasta C:\Windows\System32\spool\ clica com o botão direito na pasta printers, clica em segurança e dá permissão para o usuário todos. Se não tiver o usuário todos manda adicionar.
Vai resolver seu problema...

Rubens

não consigo acessar matricial pelo net use no Windows 7

Enviado: 19 Nov 2014 15:21
por porter
olá Fernando Queiroz, instalei a impressora e mudei la no gerenciador de dispositivos para LPT2, fiz um teste com DIR > PRN e imprimiu lá no Servidor, mas pelo sistema não está imprimindo, acho que é porque dentro do sistema está setado como SET PRINTER TO LPT1, estou querendo resolver esse problema com o Try Catch para testar todos os LPTs, como eu faria para testar com Try Catch, da forma descrita abaixo nao da certo porque ele só testa o primeiro.

try
SET PRINTER TO LPT1
SET PRINTER TO LPT2
SET PRINTER TO LPT3
catch
end

obrigado.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 19 Nov 2014 15:23
por porter
olá Rubens estou tentando imprimir do W7 para W7 32 bits, obrigado pela dica, vou testar e retorno com o resultado.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 19 Nov 2014 16:27
por Jairo Maia
Olá Porter,

O que você está imprimindo é um arquivo, ou seja, você está enviando a impressora um arquivo .Txt? Se sim, uma vez instalada a impressora, fica fácil. Mas confirme se é isso.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 19 Nov 2014 17:16
por porter
olá Jairo, estou imprimindo dados de um arquivo com SET DEVICE TO PRINT, eu deixei fixo dentro do sistema para imprimir sempre em LPT1 (SET PRINTER TO LPT1), mas como na maquina cliente foi instalada a impressora como LPT2, acho que é por isso que pelo sistema nao esta imprimindo la no servidor, estou pensando em usar try catch para testar as LPTs, se achar a LPT1, imprime por ela, se achar a LPT2, imprime por ela e assim por diante.

Espero ter conseguido explicar o problema.

obrigado Jairo.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 20 Nov 2014 17:24
por Jairo Maia
Olá Porter,

Veja se funciona com esse exemplo (xHarbour):

Código: Selecionar todos

Function Main()
 Local i, nPrn := 1, oPrn, nMaxLen := 0, aPNomes := {}
 Local cPrinter := "", aPrn := GetPrinters( .t. )
 Local cPrinDefault := GetDefaultPrinter()
 
 Local cArquivo := Coloque aqui o nome do arquivo

 If Empty( aPrn )
  Alert( "Nenhuma impressora Instalada" )
  Return ( cPrinter )
 Endif

 For i=1 To Len( aPrn )
  AaDd( aPNomes , aPrn[i,1] )
  nPrn := If( aPrn[i,1] = cPrinDefault, i, nPrn )
  nMaxLen := If( Len( aPrn[i,1] ) > nMaxLen, Len( aPrn[i,1] ), nMaxLen )
 Next

 Clear Screen
 nPrn := AChoice( 3, 10, Len( aPNomes )+3, nMaxLen+10, aPNomes, .T., Nil , nPrn )
 If nPrn = 0
  Return ( cPrinter )
 Endi

 cPrinter := Alltrim( aPNomes[nPrn] )
 
 PrintFileRaw( cPrinter, cArquivo, "Teste de Impressão" )

Return Nil

não consigo acessar matricial pelo net use no Windows 7

Enviado: 21 Nov 2014 09:03
por paiva
BOM dia


sem querer atrapalhar seria melhor jogar par um arquivo e usar o

PrintFileRaw(pprt,arquivo)

digo isso porque na hora que tiver uma Epson USB que Funciona como se fosse matricial +
ate hj nao sei se é a B. do W de repente para de trabalhar se usar imprimir direto nela

ai só com o printfile para funcionar


então já resolva de uma vez


Paiva

não consigo acessar matricial pelo net use no Windows 7

Enviado: 21 Nov 2014 11:54
por Jairo Maia
Paiva, ele cria o arquivo usando SET TO PRINT cArquivo. A idéia foi usar o PrintFileRaw(). Veja a linha 27 do exemplo em minha mensagem anterior.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 21 Nov 2014 13:47
por porter
Jairo, eu eu não estou usando o SET TO PRINT cArquivo, estou usando o SET DEVICE TO PRINT, eu não crio nenhum arquivo para imprimir, faço diretamente pelo SET DEVICE TO PRINT.

obrigado.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 21 Nov 2014 14:10
por porter
olá, vou testar o PrintFileRaw, como voces estão sugerindo, tenho certeza que é uma ótima solução.

obrigado pessoal.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 21 Nov 2014 17:56
por porter
olá Jairo, a rotina de exemplo que voce passou é muito boa, pretendo implementa-la no sistema, mas para isso, vou ter que mexer em muitas partes, portanto vou fazer essa modificação aos poucos.
De momento, eu gostaria de saber, como faço para verificar qual LPT está instalada no computador de onde pretendo imprimir na matricial(LPT1 ou LPT2, ou LPT3), seria assim:

Se for a LPT1 que está instalada
SET PRINTER TO LPT1
Se for a LPT2 que está instalada
SET PRINTER TO LPT2
sE FOR A LPT3 que está instalada
SET PRINTER TO LPT3

Quero fazer essa verificação já na entrada do sistema.

obrigado por sua atenção.

W7 32 bits, xHarbour.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 22 Nov 2014 03:24
por Jairo Maia
Olá Porter,

A função GetPrinters( .t. ) (precisa ser .t. o primeiro parâmetro) retorna uma Matriz bidimensional. No elemento 2 está a porta. Veja esse exemplo (é o exemplo que postei mais acima com pequenas alterações):

Código: Selecionar todos

Function Main()

cSuaVariavelQueGuardaPorta := PegaPorta()

Alert( cSuaVariavelQueGuardaPorta )

Return Nil

Function PegaPorta()
 Local i, nPrn := 1, oPrn, nMaxLen := 0, aPNomes := {}
 Local cPorta := "", aPrn := GetPrinters( .t. )
 Local cPrinDefault := GetDefaultPrinter()
 
 If Empty( aPrn )
  Return ( cPorta )
 Endif

 For i=1 To Len( aPrn )
  AaDd( aPNomes , aPrn[i,1] )
  nPrn := If( aPrn[i,1] = cPrinDefault, i, nPrn )
  nMaxLen := If( Len( aPrn[i,1] ) > nMaxLen, Len( aPrn[i,1] ), nMaxLen )
 Next

 Clear Screen
 nPrn := AChoice( 3, 10, Len( aPNomes )+3, nMaxLen+10, aPNomes, .T., Nil , nPrn )
 If nPrn > 0
  cPorta := StrTran( aPrn[nPrn,2], ":" )  // pega a porta da impressora
 Endi

Return cPorta

não consigo acessar matricial pelo net use no Windows 7

Enviado: 22 Nov 2014 11:33
por Itamar M. Lins Jr.
Ola!
Apenas um conceito.
Porter, quando estamos programando no ambiente windows, o mais importante é saber se a impressora está instalada no windows. A porta é o que menos importa.
Se está na lpt1, 2 ou 3, USB, rede, isso não importa muito, o relevante é saber se está on line ou não.
Quem imprime é o windows, apenas pedimos ao windows p/ imprimir, não mais conversamos com a impressora diretamente, mas com o windows.
Para imprimir texto puro criamos o texto em disco e usamos printfileraw(), coisas mais elaboradas usamos a classe win_prn(), para pdf tem algumas classes entre elas a harupdf, html...

Saudações,
Itamar M. Lins Jr.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 12 Dez 2014 11:53
por porter
olá Jairo, testei a rotina que você passou com PrintfileRaw e imprimiu normalmente, mas se eu quiser configurar para imprimir comprimido com CHR(15), porque pelo que entendi, primeiro tenho que gerar um arquivo.txt e depois imprimir, no clipper eu fazia assim:

SET PRINT ON
?? CHR(15)
SET DEVICE TO PRINT

Windows 7, xHarbour

obrigado.

não consigo acessar matricial pelo net use no Windows 7

Enviado: 12 Dez 2014 13:37
por Jairo Maia
Olá Porter,

Veja um exemplo de como criar o arquivo e imprimir:

Código: Selecionar todos

Function Main()
 /*
   Comandos para matriciais e termicas
 */
 setacomp17 := CHR(15)               // coloca compressão 17.5 cpp
 tiracomp17 := CHR(18)               // remove a compressão 17.5 cpp
 
 setacomp20 := CHR(27)+'M'+CHR(15)   // coloca compressão 20 cpp
 tiracomp20 := CHR(27)+'P'           // remove a compressão 20 cpp

 setaelite := CHR(27)+'M'            // coloca elite
 tiraelite := CHR(27)+'P'            // remove elite
 
 setanegrito := CHR(27)+'E'       // coloca negrito
 tiranegrito := CHR(27)+'F'       // tira negrito
 
 setaexpandido := CHR(27)+'W'+CHR(1) // coloca expandido
 tiraexpandido := CHR(27)+'W'+CHR(0) // tira expandido
 
 seta8linhaspp := CHR(27)+'0'        // coloca 8 linhas por polegada
 tira8linhaspp := CHR(27)+'2'        // tira 8 linhas por polegada

 SET DEVICE TO PRINTER
 SET PRINTER TO "Arquivo.Txt"  // Cria o arquivo
 
 @ PRow()+0, 01 Say setacomp17 
 @ PRow()+1, 01 Say "Compressao em 17.5 cpp"
 @ PRow()+0, 01 Say tiracomp17
 
 @ PRow()+0, 01 Say setacomp20
 @ PRow()+1, 01 Say "Compressao em 20 cpp"
 @ PRow()+0, 01 Say tiracomp20

 @ PRow()+0, 01 Say setaelite
 @ PRow()+1, 01 Say "Caracteres elite"
 @ PRow()+0, 01 Say tiraelite

 @ PRow()+0, 01 Say setanegrito
 @ PRow()+1, 01 Say "Caracteres em negrito"
 @ PRow()+0, 01 Say tiranegrito

 @ PRow()+0, 01 Say setaexpandido
 @ PRow()+1, 01 Say "Caracteres expandidos"
 @ PRow()+0, 01 Say tiraexpandido

 SET PRINTER TO  // Fecha o arquivo (necessário)
 SET DEVI TO SCREEN
 
 /*
   Imprime na impressora padrão
 */
 If PrintFileRaw( GetDefaultPrinter(), "Arquivo.Txt", "Teste de impressao") = 0
  Alert( "Falha na impressão" )
 Else
  Alert( "Impressão enviada com sucesso" )
 EndIf
Porter, evite dirigir-se diretamente a um membro do fórum, quando o assunto pode ser dirigido a todos. Isto inibe a participação de outros membros.