Clipper On Line • Ver Tópico - DICA: Tratamento do SPOOLER, desligar, ligar e limpar

DICA: Tratamento do SPOOLER, desligar, ligar e limpar

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

DICA: Tratamento do SPOOLER, desligar, ligar e limpar

Mensagempor rochinha » 26 Abr 2017 15:23

Amiguinhos,

/*
* Objetivo: Reiniciar serviço de spool caso esteja com impressões travadas ou limpar de arquivos não impressos
* data: 26/04/2017
* José Carlos da Rocha
*/

#include "FiveWin.ch" // Chamada pode ser excluida caso não use com Fivewin

*
* ----------------------------------------------------------------
*
FUNCTION main( limpaSpool )
   LOCAL oSpooler

   LOCAL strService := "SPOOLER"
   LOCAL cSpoolPath := getEnvironmentString( "WINDIR" ) + "\SYSTEM32\SPOOL\PRINTERS"

   DEFAULT limpaSpool := "N"

   oSpooler := TOleAuto():New( "Wscript.Shell" )

   oSpooler:run( "net stop " + strService )

   if limpaSpool = "S"
      nContador := adir( cSpoolPath + "\*.*" )
      if nContador != 0
         DECLARE TXT_NOMES[ nContador ]
         adir( cSpoolPath + "\*.*", TXT_NOMES )
         for nContador = 1 TO LEN( TXT_NOMES )
             fErase( cSpoolPath + "\" + TXT_NOMES[ nContador ] )
         next
      endif
   else
      SysWait( 10 ) // Função especifica para Fivewin, mas pode ser colocado qualquer contador para atrazar a continuidade
   endif

   oSpooler:run( "net start " + strService )

   oSpooler:End()

   RETURN NIL

function getComputerName()
   LOCAL reg
   oNetwork := TOleAuto():New("wscript.Network")
   return oNetwork:ComputerName()

function getEnvironmentString( _string_ )
   LOCAL reg
   oWSHShell := TOleAuto():New("wscript.Shell")
   return oWSHShell:ExpandEnvironmentStrings( "%" + _string_ + "%" )


A rotina em questão é mão-na-roda para liberar o spool de toda lambança de impressão que às vezes se perde do foco do serviço. Sabe aquela impressão que você manda, mas não sai? pois é, o arquivo de trabalho fica perdido dentro da pasta mas não é visualizado para exclusão na tela do spooler mas o serviço fica tentando enviá-lo e portanto não passa para o próximo até que consiga, o que acaba não acontecendo.

Para os que adoram eliminar gordurinhas no código, podem usar Directory() e Aeval() para melhorar o trecho dentro de if limpaspool...endif

Bom trabalho.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

DICA: Tratamento do SPOOLER, desligar, ligar e limpar

Mensagempor rochinha » 29 Abr 2017 00:11

Amiguinhos,

Eis um exemplo de uso:
/*
* Objetivo: Reiniciar serviço de spool caso esteja com impressões travadas ou limpar de arquivos não impressos
* data: 26/04/2017
* versao: 2017-0429
* José Carlos da Rocha
*/

#include "FiveWin.ch"

*
* ----------------------------------------------------------------
*
function Main()
   local oBar
   // Pega o caminho do aplicativo
   cPath     := cFilePath( GetModuleFileName( GetInstance() ) )
   // Pega nome da maquina
   cNetName  := getComputerName()
   //
   DEFINE WINDOW oWnd TITLE alltrim( cNetName ) + " - Manutenção de Fila de Impressão"
          DEFINE BUTTONBAR oBar OF oWnd _3D
          DEFINE BUTTON OF oBar ACTION fSpooler( 1 ) TOOLTIP "Desliga Spooler"
          DEFINE BUTTON OF oBar ACTION fSpooler( 2 ) TOOLTIP "Liga Spooler"
          DEFINE BUTTON OF oBar ACTION fSpooler( 3 ) TOOLTIP "Limpa Fila de Impressao" GROUP
          SET MESSAGE OF oWnd TO "" CLOCK DATE
   ACTIVATE WINDOW oWnd
   //
   return nil

*
* ----------------------------------------------------------------
*
FUNCTION fSpooler( opcao, limpaSpool )
   LOCAL oSpooler, nInvisivel := 7

   LOCAL strService := "SPOOLER"
   LOCAL cSpoolPath := getEnvironmentString( "WINDIR" ) + "\SYSTEM32\SPOOL\PRINTERS"

   DEFAULT limpaSpool := "N"
   DEFAULT opcao      := 2

   // Cria objeto oSpooler
   oSpooler := TOleAuto():New( "Wscript.Shell" )
   
   // Se escolha foi Desligar
   do case
      case opcao = 1
          // Desliga serviço
           oWnd:SetText( "Desligando o serviço de Spool..." )
           SysWait( 5 )
           oSpooler:run( "net stop " + strService, nInvisivel )
           oWnd:SetText( "Serviço de spool desligado..." )
           SysWait( 5 )
          //
      case opcao = 2
          // Liga serviço
           oWnd:SetText( "re-ligando o serviço de Spool..." )
           SysWait( 5 )
           oSpooler:run( "net start " + strService, nInvisivel )
           oWnd:SetText( "Serviço de spool re-ligado..." )
           SysWait( 5 )
          //
      case opcao = 3
          // Desliga serviço
           oWnd:SetText( "Desligando o serviço de Spool..." )
           SysWait( 5 )
           oSpooler:run( "net stop " + strService, nInvisivel )
          // Processa limpeza da fila de impressões
           oWnd:SetText( "Processando limpeza no spool..." )
           SysWait( 5 )
           nContador := adir( cSpoolPath + "\*.*" )
           if nContador != 0
              DECLARE TXT_NOMES[ nContador ]
              adir( cSpoolPath + "\*.*", TXT_NOMES )
              for nContador = 1 TO LEN( TXT_NOMES )
                  fErase( cSpoolPath + "\" + TXT_NOMES[ nContador ] )
              next
           endif
           // Se quiser esperar algum tempo basta configurar
           SysWait( 5 )
          // reLiga serviço
           oWnd:SetText( "re-ligando o serviço de Spool..." )
           SysWait( 5 )
           oSpooler:run( "net start " + strService, nInvisivel )
           oWnd:SetText( "Serviço de spool ligado..." )
           SysWait( 5 )
          //
   endcase

   // Elimina objeto oSpooler
   oSpooler:End()

   RETURN NIL

function getComputerName()
   LOCAL reg
   oNetwork := TOleAuto():New("wscript.Network")
   return oNetwork:ComputerName()

function getEnvironmentString( _string_ )
   LOCAL reg
   oWSHShell := TOleAuto():New("wscript.Shell")
   return oWSHShell:ExpandEnvironmentStrings( "%" + _string_ + "%" )
Anexos
olespool.zip
tratamento do serviço de spool
(570.89 KiB) Baixado 47 vezes
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

DICA: Tratamento do SPOOLER, desligar, ligar e limpar

Mensagempor asimoes » 29 Abr 2017 08:38

Muito útil Rochinha, obrigado!
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DICA: Tratamento do SPOOLER, desligar, ligar e limpar

Mensagempor rochinha » 29 Abr 2017 12:27

Amiguinhos,

asimoes
Valeu queridão. No caminho encontramos pedras, não dá pra passar por cima e deixar para o parceiro que vem depois, é preciso retirá-las para que o caminho fique mais suave.

Hoje eu acordei Platônico.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4532
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 796 vezes
Mens.Curtidas: 242 vezes

DICA: Tratamento do SPOOLER, desligar, ligar e limpar

Mensagempor rubens » 30 Abr 2017 09:06

:{
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro