Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 07 de Setembro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
52 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Verificando as impressoras pela rede e sabendo se elas estão online
Publicado por Admin : Sexta, Janeiro 28, 2005 - 05:06 GMT-3 (7283 leituras)
Comentários 3 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Como verificar quais são as impressoras da rede e se elas estão On-line Com essa dica eu ajudei no fórum esta semana o Ronaldo, mas creio que como artigo, devo conseguir ajudar mais. Em vários projetos, saber se a impressão será efetuada com sucesso, e se a impressora estiver em rede e o computador que ela estiver ligada estiver sendo reiniciado, por exemplo, ou houver algum problema com a rede, talvez seja melhor dar um aviso ao usuário e esperar que ele regularize a situação antes de efetuar a impressão...
Com esta rotina abaixo, você consegue efetivamente tanto em Windows 98 quanto em Xp, obter uma resposta confiável da impressora.

 function VerImpressoraONLINE: Cardinal;
var
  hPrinter  : THandle;
  pInfo:  PPrinterInfo2;
  bytesNeeded: DWORD;
begin
  hprinter := GetCurrentPrinterHandle;
  try
    Winspool.GetPrinter( hPrinter, 2, Nil, 0, @bytesNeeded );
    pInfo := AllocMem( bytesNeeded );
    try
      Winspool.GetPrinter( hPrinter, 2, pInfo, bytesNeeded, @bytesNeeded );
       Result := pInfo^.Status;
    finally
      FreeMem( pInfo );
    end;
  finally
    ClosePrinter( hPrinter );
  <span style="font-family: Arial">end;
end;


se o resultado for > 0 então a impressora tem algum tipo de problema.

If VerImpressoraONLINE > 0
   then ShowMessage('A Impressora está OFFLINE, impressão ficará no aguardo' + #13 +  'Chame o Suporte Técnico para verificar a Impressora' );

 Para verificar quais são as impressoras da sua rede, teste da seguinte forma:

 var  ts : TStrings;
      J, K, I : Integer;
begin
    TS := Printer.Printers;
    K := Printer.PrinterIndex;
           J := -1;
           For I := 0 to TS.Count -1
               do If uppercase(copy(TS.Strings[I],1,7)) = 'EPSON'
                     then J := I;
           If J = -1
              then begin
                     
ShowMessage('Impressora do estoque não configurada');
                     Exit;
              end
              else begin
                     Printer.PrinterIndex := J;
                     If VerImpressoraONLINE > 0
                        then ShowMessage('A Impressora EPSON está OFFLINE, impressão ficará no aguardo' + #13 +  'Chame o Suporte Técnico para verificar a Impressora' );
           end;


Espero ter ajudado, se alguém tiver mais alguma dúvida o meu e-mail é mgrasser@bol.com.br ou poste no Fórum.

Mauricio Grasser

Observação: Por: Mauricio Grasser - mgrasser@bol.com.br



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: mgrasser : Fev 11, 2005 - 11:00
(Informações sobre o membro | Enviar uma mensagem) http://
Parece que esqueci de colocar que no Uses é necessário:

Printers, Winspool;

e a linha



não deveria estar aí, é erro na onversão para html

ficou faltando a funções adicional abaixo

function GetCurrentPrinterHandle: THandle;

function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;



por: bruno.prestes : Set 05, 2005 - 01:58
(Informações sobre o membro | Enviar uma mensagem)
amigo não estou entendendo muito bem seu artigo peço que se você poder me enviar um passo-a-passo mais explicadinho eu lhe agradeço!!!


A vida profissional de um programador depende de um fator: a troca de informações!!!


por: rivaldots : Out 13, 2005 - 11:28
(Informações sobre o membro | Enviar uma mensagem) http://
Legal, gostei do artigo. Eu estou procurando isso há tempos.

Minha idéia é um pouco além disso. É que se a impressora estiver offline e o usuário mandar alguma impressão, ela vai ficar marcada como offline no micro Client até que alguém vá até a propriedade da impressora e desmarque.

Eu queria fazer um programa que ficasse no tray, monitorando as impressoras remotas dos usuários e se por algum acaso a mesma estiver off-line tentar colocá-la online após x minutos, e este tempo vai aumentando até ficar de hora em hora.

Outras enfeites, tais como mudar a cor do ícone no tray, exibir as impressoras offline ao apontar par o ícone, etc ficaria para depois.

Você pode me ajudar nessa. Este artigo já vai ser 50% do que preciso.

Rivaldo.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados