Fonte: www.activedelphi.com.br
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.
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 );
end;
end;
se o resultado for > 0 então a impressora tem algum tipo de problema.
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 );
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' );
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;
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;
Nenhum comentário:
Postar um comentário