La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4485 - COMO PUEDO CHEQUEAR SI ESTA LISTA LA IMPRESORA EN PUERTO LPT
Autor:  Roberto Martinez Olvera
Hice un programa que imprime en una impresora local conectada al puerto lpt1, estoy usando la instruccion Writeln, escribiendo al puerto ´LPT1´, el problema es que si la impresora no esta lista se bloquea. ¿Como puedo checar si esta lista la impresora o no? Ya intente con IOResult, con la interrupcion 17h y no.
Alguien puede ayudarme...Gracias

  Respuesta:  Omar Silva Muñoz
Forma Delphi:
function IsPrinter:boolean;
var
Impresora:TExtFile;
begin
AssignFile(Impresora,´lpt1´);
{$I-}
Rewrite(Impresora);
{$I+}
if ioresult<>0 then
result:=False // impresora er
else
result:=True; // impresora ok
end;

Forma Ensamblador:

function IsPrinter:boolean;
const
PrnStInt:byte=$17;
StRq:byte=$02;
PrnNum:word=0; {0 para lpt1, 1 para lpt2, etc}
var
nResult:byte;
begin
asm
mov ah,StRq;
mov dx,PrnNum;
Int $17;
mov nResult,ah;
end;
result:=(nResult and $80)=$80;
end;