Página 1 de 1

Rotina para saber status da impressora não funcionando

Enviado: 23 Mai 2017 11:49
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)

Rotina para saber status da impressora não funcionando

Enviado: 24 Mai 2017 07:30
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.

Rotina para saber status da impressora não funcionando

Enviado: 24 Mai 2017 08:40
por porter
Olá Jairo,
Obrigado por sua atenção.