Verificar se Impressora esta Conectada

Function OnLine(Porta:Word):Boolean;
Const 
Portas :Byte = $02;
Var 
Res :Byte;
Begin 
{ Código em Assembler } 
Asm 
mov ah,Portas; {Requisita o acesso as portas}
mov dx,Porta;{Define a porta de teste}
Int $17; {Chama a interrupção de Impressora} 
mov Res,ah; {Guarda em Res o resultado da operação } 
end; 
Result := (Res and $80) = $80; {Testa o valor de saída}
End; 

 
 
Verificando se a impressora está ativa

While not PrinterOnline() do
begin
  MsgBox('Verifique a Impressora!','ATENÇÃO');
end;
 
Function PrinterOnLine : Boolean;
Const
  PrnStInt : Byte = $17;
  StRq : Byte = $02;
  PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }
Var
  nResult : byte;
Begin (* PrinterOnLine*)
  Asm
  mov ah,StRq;
  mov dx,PrnNum;
  Int $17;
  mov nResult,ah;
end;
  PrinterOnLine := (nResult and $80) = $80;
End; 





----- Mensagem original ----
De: Paulo Geloramo <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quarta-feira, 23 de Maio de 2007 17:09:03
Assunto: [delphi-br] Verificar se tem impressora na porta LPT1

Estou enviando a palavra Teste para a imperssoa conectada
na porta LPT1 conforme exemplo abaixo:

Funciona perfeitamente, mas quando o usuario não possui
impressora conectada na porta LPT1, o aplicativo trava ,
não mostrando mensagem de erro.

Como poderia evitar esta travada da aplicação, verificar
se possui impressora na porta selecionada e apresentar
uma mensagem ao usuário?

procedure Imprimir;
var
F: TextFile;
begin
AssignFile(F, 'LPT1');
Rewrite(F);
try
WriteLn(F, 'Teste');
finally
CloseFile(F) ;
end;
end;

t+ 




__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]

Responder a