如题

解决方案 »

  1.   

    我在网上找到下面函数:
    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; 
    参数时打印机端口,返回值如下:
    01h - Timeout
    08h - I/O Error 
    10h - Printer selected 
    20h - Out of paper 
    40h - Printer acknowledgement 
    80h - Printer not busy (0 if busy)
    请问在程序里如何调用该函数?即怎么判断打印机是否联机?
      

  2.   

    网上还有一篇文章,请问怎么使用:可用CREATEFILE以PRN为文件名生成一个文件,检测返回值,若成功则打印机可用,否则显示打印机故障。生成关于PRN的文件句柄后,可象普通文件一样向文件写入内容,比如WRITE,写完后关闭文件。
    //从并行端口读取打印机状态
    function GetPrinterStatus:byte;
    asm
      MOV DX,$379;
      IN AL,DX;
    end;
    //获取打印机是否出错
    function CheckPrinter:boolean;
    var
    temp:byte;
    begin
      temp:=GetPrinterStatus;
      Result:=not ( ((temp and $80)=0) //打印机忙
      or ((temp and $20)<>0)  //打印机缺纸
      or ((temp and $10)=0)    //打印机未联机
      or ((temp and $08)=0) ); //打印机出错;
    end;