我使用delphi6里的quickReport的时候,如果机器的“设置——>打印机”里面添加了一台打印机,而且该打印机不可用,那么程序运行时就会出错;如果将该打印机删除,或者添加的打印机是好用的,就没有问题。
    请问该如何在程序运行时检测是否有可用的打印机,并且在打印机不可用时可以不使用该报表?

解决方案 »

  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; 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)