Ir ao conteúdo
  • Cadastre-se

Wander Junio

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá Boa Tarde , Trabalho com Delphi a algum tempo e estou precisando de uma rotina que eu passe o nome da impressora e ela me diga se está online ou offline. Eu tenho está rotina só que ela não está funcionando 100% , na maioria das vezes ela traz errado o status. function TSMIMP.GetPrinterStatus(aName: string): String; var PrintersInfo : PPrinterInfo2; pcbNeeded, pcReturned, jpcbNeeded, jpcReturned : Cardinal; I, J: Integer; hPrinter: THandle; JobInfo, TmpJobInfo: PJobInfo3; phPrinter ,cbBuf : cardinal; Need :PDWORD; aJobs : integer; aStatus : integer; ResTex : Byte; begin Application.ProcessMessages; aStatus := -1; aJobs := 0; Result := ''; EnumPrinters(PRINTER_ENUM_LOCAL or PRINTER_ENUM_CONNECTIONS, nil, 2, PrintersInfo, 0, pcbNeeded, pcReturned); if GetLastError = ERROR_INSUFFICIENT_BUFFER then begin GetMem(PrintersInfo, pcbNeeded); try if EnumPrinters(PRINTER_ENUM_LOCAL or PRINTER_ENUM_CONNECTIONS , nil, 2,PrintersInfo, pcbNeeded, pcbNeeded, pcReturned) then begin for I := 0 to pcReturned - 1 do begin if PrintersInfo^.pPrinterName = aName then begin aStatus := PrintersInfo^.Status; aJobs := PrintersInfo^.cJobs; if aStatus = 0 then begin Result := 'S'; end else begin Result := 'N'; end; break; end; inc(PrintersInfo); end; end else begin RaiseLastOSError; end; finally try FreeMem(PrintersInfo); except end; end; end else begin RaiseLastOSError; end; end; Lembrando que a impressora pode estar tanto por rede ou local.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!