Página 1 de 1

Dúvida com rotina para verificar status da impressora

Enviado: 29 Out 2017 10:03
por porter
olá pessoal,
Essa rotina, encontrei aqui no fórum, ela tem o propósito de verificar qual o status atual da impressora, mas estou com dúvida com
esses comandos:

Function PrintOnLine(vcPrintOn) --> qual parâmetro devo informar, do que se trata vcPrintOn ?
local nStatus := PrintStat(vcPrintOn) --> Função PrintStat, devo acrescentar alguma lib ou tenho que criar essa função manualmente ?
local nStatus := PrnStatus(vcPrintOn) --> Função PrnStatus, devo acrescentar alguma lib ou tenho que criar essa função manualmente ?

Harbour 3.2.0 (dev)

Código: Selecionar todos

********************************************************************************	   	    	   	 
Function PrintOnLine(vcPrintOn)
****************************************
   	* Funcao para verificar o
   	* status da impressora
   	* selecionada, local ou em rede
   	*****************************************
         local nStatus := PrintStat(vcPrintOn)
         local nStatus := PrnStatus(vcPrintOn)
         if nStatus > 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)

Dúvida com rotina para verificar status da impressora

Enviado: 29 Out 2017 11:33
por Toledo
Amigo, a vcPrintOn deve ser o nome da impressora.
A função PrintStat() é da lib hbct do xHarbour, no Harbour 3.2 tem ela na lib xhb, mas é apenas para compatibilidade e não importa o status da impressora, sempre vai retornar 0.
Já a função PrnStatus() é da FiveWin.

Abraços,

Dúvida com rotina para verificar status da impressora

Enviado: 01 Nov 2017 13:56
por porter
A função PrintStat() é da lib hbct do xHarbour, no Harbour 3.2 tem ela na lib xhb, mas é apenas para compatibilidade e não importa o status da impressora, sempre vai retornar 0.
Já a função PrnStatus() é da FiveWin.
olá Toledo,
Entrei no site abaixo, e fiz o download do FiveWin 1.0, no arquivo.HBP, acrescentei
-iC:\fivewin\trunk\fivewin1.0\include o #include "fivewin.ch" coloquei no inicio do PRG,
e ele está sendo encontrado, mas está dando erro na compilação :

undefined reference to HB_FUN_TSAY
collect2.exe: error: ld returned 1 exit status
hbmk2[ESTOQUE]: Erro: Executando linkeditor. 1

HARBOUR 3.2.0(dev)

https://code.google.com/archive/p/fivew ... ult/source

Dúvida com rotina para verificar status da impressora

Enviado: 01 Nov 2017 14:18
por porter
O problema que estou encontrando, é que as vezes a fila de impressão fica congestionada, então não consigo
imprimir pela rede, com essa função gostaria de dar uma mensagem para o usuário avisando o problema.

Dúvida com rotina para verificar status da impressora

Enviado: 01 Nov 2017 14:21
por Kapiaba
Olá Porter, está em: SAY.PRG ou você não linkou as libs do Five.

Se esse fivewin estiver completo, as classes estão em: C:\FWH..\SOURCE\CLASSES

Você pode baixar a minha primeira versão FWH2.7 em 32 bits, autorizado pelo Antonio Liñares, aqui:

https://www.4shared.com/rar/v5Q3qkH-ba/FWH27.html

Ai, você verá como é completo.

Abs.

Dúvida com rotina para verificar status da impressora

Enviado: 01 Nov 2017 14:44
por Kapiaba
Porter, o SPOOL da impressora está ligado? Nem em Fivewin, você consegue mandar mensagem de impressora.

A não ser, perguntar se a impressora está "Pronta?" . No Windows, o comando ISPRINTER(), não funciona.

Abs

Dúvida com rotina para verificar status da impressora

Enviado: 01 Nov 2017 15:23
por porter
Olá Porter, está em: SAY.PRG ou você não linkou as libs do Five.
Se esse fivewin estiver completo, as classes estão em: C:\FWH..\SOURCE\CLASSES
Você pode baixar a minha primeira versão FWH2.7 em 32 bits, autorizado pelo Antonio Liñares, aqui:
https://www.4shared.com/rar/v5Q3qkH-ba/FWH27.html

Ai, você verá como é completo.

Porter, o SPOOL da impressora está ligado? Nem em Fivewin, você consegue mandar mensagem de impressora.

A não ser, perguntar se a impressora está "Pronta?" . No Windows, o comando ISPRINTER(), não funciona.
Olá Kapiaba, apenas acrescentei -iC:\fivewin\trunk\fivewin1.0\include no HBP, e #include "fivewin.ch" no PRG
e tentei compilar, estou tentando fazer com o prnstatus do FiveWin conforme rotina no começo do tópico, mas
se nem com o FiveWin consigo verificar o SPOOL da impressora, não vai adiantar eu prosseguir com essa rotina.
O SPOOL da impressora está ligado, sempre acontece da fila de impressão ficar congestionada e não conseguir
imprimir pela rede, então tenho que sempre esvaziar o SPOOLER, não sei se esse problema acontece por se tratar de um XP na estação.
Vou baixar a versão que você sugeriu e tentar compilar pelo menos para aprender a usar outras funções do FiveWin.

Obrigado.

Dúvida com rotina para verificar status da impressora

Enviado: 01 Nov 2017 16:50
por Kapiaba
Porter, em Fivewin essa funcao simples, poderia ajudar. Mesmo assim, tenho dúvidas, se o windows aceita de boa.

Código: Selecionar todos

FUNCTION isPrinterReady( oPrn )

RETURN !Empty( oPrn:hDC )
Veja se consegue algo semelhante para a linguagem que voce usa.

abs.