Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как получить статус принтера?

01.01.2007
function TestPrinterStatus(LPTPort: Word): Byte; 
var
 
Status: byte;
 
CheckLPT: word;
begin
 
Status := 0;
 
if (LPTPort >= 1) and (LPTPort <= 3) then
 
begin
   
CheckLPT := LPTPort - 1;
   
asm
      mov dx
, CheckLPT;
      mov al
, 0;
      mov ah
, 2;
     
int 17h;
      mov
&Status, ah;
   
end;
 
end;
 
Result := Status;
end;
 
 
{
 
Pass in the LPT port number you want to check & get the following back:
 
01h - Timeout
 
08h - I/O Error
 
10h - Printer selected
 
20h - Out of paper
 
40h - Printer acknowledgement
 
80h - Printer not busy (0 if busy)
 
 
Note:
 
This function doesn't work under NT, it gives an access violation
  from the DOS interrupt call.
}

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php