Ir ao conteúdo
  • Cadastre-se
Wander Junio

Pegar status da impressora delphi

Recommended Posts

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.

Editado por Simon Viegas
Ao postar um código, favor inserir na tag CODE (botão <>)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×