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

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

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

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem 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.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem por porter »

olá Rubens estou tentando imprimir do W7 para W7 32 bits, obrigado pela dica, vou testar e retorno com o resultado.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem 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.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem 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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

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

Mensagem 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
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem 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.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem por porter »

olá, vou testar o PrintFileRaw, como voces estão sugerindo, tenho certeza que é uma ótima solução.

obrigado pessoal.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem 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.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem 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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

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

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

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

Mensagem 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.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder