Rotina para saber status da impressora não funcionando

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

Moderador: Moderadores

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

Rotina para saber status da impressora não funcionando

Mensagem por porter »

olá pessoal, com a rotina abaixo, quero que me retorne o Status de uma impressora escolhida,
não está dando erro, mas nStatus, sempre retorna 0 (zero), mesmo a impressora estando desligada e desconectada,
que teste eu poderia fazer para ver se realmente essa rotina está funcionando, vou precisar testa-la em
impressoras locais e em rede também.

Harbour 3.2.0dev modo console
Windows 7

Código: Selecionar todos

//vcPrintOn é o nome da impressora selecionada.
local  nStatus := PrintStat(vcPrintOn)
*local nStatus := PrnStatus(vcPrintOn)
   	 
if nStatus > 0  // Sempre retornando 0
   Alert("Condicao da impressora: " + IsImpressora(vcPrintOn))
endif
return .t.

function IsImpressora( QuePrinter )
*****************************************
* Funcao para retornar a mesnagem de
* status da impressora
*****************************************
   LOCAL nStatus
   nStatus := PrintStat( QuePrinter )
   if     nStatus <        1 ; return "OK"
   elseif nStatus =        1 ; return "Impressora Pausada"
   elseif nStatus =        2 ; return "Impressora com Erro"
   elseif nStatus =        4 ; return "Impressora Deletando"
   elseif nStatus =        8 ; return "Impressora em Modo Bandeja"
   elseif nStatus =       16 ; return "Impressora Sem Papel"
   elseif nStatus =       32 ; return "Impressora em Modo Manual"
   elseif nStatus =       64 ; return "Impressora com Problema no Papel"
   elseif nStatus =      128 ; return "Impressora OffLine"
   elseif nStatus =      256 ; return "Impressora com IO Ativo"
   elseif nStatus =      512 ; return "Impressora Ocupada"
   elseif nStatus =     1024 ; return "Impressora Imprimindo"
   elseif nStatus =     2048 ; return "Impressora Memoria Lotada"
   elseif nStatus =     4096 ; return "Impressora Nao Instalada"
   elseif nStatus =     8192 ; return "Impressora Aguardando"
   elseif nStatus =    16384 ; return "Impressora Processando"
   elseif nStatus =    32768 ; return "Impressora Inicializando"
   elseif nStatus =    65536 ; return "Impressora em Atencao"
   elseif nStatus =   131072 ; return "Impressora Toner Baixo"
   elseif nStatus =   262144 ; return "Impressora Sem Toner"
   elseif nStatus =   524288 ; return "Impressora PAGE_PUNT"
   elseif nStatus =  1048576 ; return "Impressora Intervencao do Usuario"
   elseif nStatus =  2097152 ; return "Impressora Sem Memoria"
   elseif nStatus =  4194304 ; return "Impressora Tampa Aberta"
   elseif nStatus =  8388608 ; return "Impressora Servidor Desconhecido"
   elseif nStatus = 16777217 ; return "Impressora POWER_SAVE"
   endif
   return(nil)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Rotina para saber status da impressora não funcionando

Mensagem por Jairo Maia »

Olá porter,

Você só irá consultar o status de uma impressora se ela estiver conectada DIRETAMENTE a uma porta LPT usando a função Hb_IsPrinter(), que retorna .T. se pronta e .F. se desligada. Usando impressoras instaladas no Windows, o teste esbarra no spooler, e sempre retornará Zero.
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

Rotina para saber status da impressora não funcionando

Mensagem por porter »

Olá Jairo,
Obrigado por sua atenção.
Responder