A funcao PrinterPortToName() do xhb
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
A funcao PrinterPortToName() do xhb
Caros estou tentando verificar (no sistema) c a impressora estah conectada
ou mesmo c a porta LPT estah com uma impressora online, estou usando o
exemplo abaixo, mas estah sempre me retornando vazio. O q estou fazendo
errado?
IF Empty(PrinterPortToName(Alltrim(CONFIG->por01)))
vStatus01:="Desconectada"
oStatus01:SetText(vStatus01)
Else
vStatus01:="Conectada"
oStatus01:SetText(vStatus01)
ENDIF
Marcos Roberto
ou mesmo c a porta LPT estah com uma impressora online, estou usando o
exemplo abaixo, mas estah sempre me retornando vazio. O q estou fazendo
errado?
IF Empty(PrinterPortToName(Alltrim(CONFIG->por01)))
vStatus01:="Desconectada"
oStatus01:SetText(vStatus01)
Else
vStatus01:="Conectada"
oStatus01:SetText(vStatus01)
ENDIF
Marcos Roberto
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Olá Roberto,
Fiz o teste conforme esta no HELP e aqui me retornou as impressora certinha:
Fiz o teste conforme esta no HELP e aqui me retornou as impressora certinha:
Código: Selecionar todos
// The example queries the printer ports LPT1: to LPT5: and
// lists the names of connected printers
PROCEDURE Main()
LOCAL aPrinters := {}
LOCAL i, cPrinter, cPort
FOR i:=1 TO 5
cPort := "LPT" + LTrim( Str(i) ) + ":"
cPrinter := PrinterPortToName( cPort )
IF .NOT. Empty( cPrinter )
AAdd( aPrinters, { cPort, cPrinter } )
ENDIF
NEXT
IF Empty( aPrinters )
? "No printer found"
ELSE
AEval( aPrinters, {|a| Qout( a[1], a[2] ) } )
ENDIF
RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
A funcao PrinterPortToName() do xhb
Olá sygecom... estou precisando de sua ajuda...
até antes de migrar para o clipper em janeiro/2015, a função ISPRINTER() que é nativa do clipper funcionava perfeitamente.
E, como é este funcionava para mim?
Bom, está no meu código desde 1998 (ano) assim:
acontece que após migrar para harbour 3.4.0, não mais funciona corretamente.
E, funcionar corretamente pra mim sempre foi assim:
Testei o seu exemplo
se existir uma impressora instalada e ligada --> .t.
se existir uma impressora instalada e desligada --> .t.
se não existir uma impressora instalada aí sim --> .f.
Então, as 2 primeiras informações não estão corretas...
bom já tentei de tudo:
todos os códigos acima, dão sempre a mesma coisa... não importa se a impressora está ligada ou não... se houver ela instalada, retorna como .t.
E, antes de migrar, só retornava .t. se a impressora estivesse ligada, e, no caso fiz um loop que enquanto o usuário não pressiona a tecla ESC ou não resolva o problema da impressora o do/while não é encerrado.
Você ou alguém pode ajudar?
até antes de migrar para o clipper em janeiro/2015, a função ISPRINTER() que é nativa do clipper funcionava perfeitamente.
E, como é este funcionava para mim?
Bom, está no meu código desde 1998 (ano) assim:
Código: Selecionar todos
do while (lastkey () <> K_ESC .and. .not. isprinter ())E, funcionar corretamente pra mim sempre foi assim:
Então já tentei de tudo... tanto em windows XP (32), windows 7 (32 bits) e agora em windows 10 (64 bits)... o retorno é sempre o mesmo (.f.) não há condição que funcione.se existir impressora - .t.
se não existir impressora - .f.
se a impressora estiver instalada e ligada - .t.
se a impressora estiver instalada e desligada - .f.
se a impressora existir, ligada, mas o cabo desconectado - .f.
Testei o seu exemplo
, ou melhor, fiz todo o código de sua última postagem e o resultado é assim:marcos.gurupi escreveu:PrinterPortToName("LPT2:",.T.)
se existir uma impressora instalada e ligada --> .t.
se existir uma impressora instalada e desligada --> .t.
se não existir uma impressora instalada aí sim --> .f.
Então, as 2 primeiras informações não estão corretas...
bom já tentei de tudo:
Código: Selecionar todos
// do while (lastkey () <> K_ESC .and. .not. isprint ())
// do while (lastkey () <> K_ESC .and. .not. ft_IsPrint ())
// do while (lastkey () <> K_ESC .and. .not. isprinter ())
// do while (lastkey () <> K_ESC .and. .not. hb_IsPrinter ())
do while (lastkey () <> K_ESC .and. .not. EMPTY( PRINTERPORTTONAME( "lpt1:", .T. ) ) )
// do while (lastkey () <> K_ESC .and. .not. sprintf ())
// do while (lastkey () <> K_ESC .and. .not. PrintReady (1))
// do while (lastkey () <> K_ESC .and. .not. PrinterExists ())
// do while (lastkey () <> K_ESC .and. .not. PrinterPortToname ())
// do while (lastkey () <> K_ESC .and. .not. XIsPrinter(1))
// do while (lastkey () <> K_ESC .and. .not. NetPrinter())
// do while (lastkey () <> K_ESC .and. .not. ERR_print_errors(BIO_new_fd( 1, HB_BIO_NOCLOSE )))
E, antes de migrar, só retornava .t. se a impressora estivesse ligada, e, no caso fiz um loop que enquanto o usuário não pressiona a tecla ESC ou não resolva o problema da impressora o do/while não é encerrado.
Você ou alguém pode ajudar?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!