如何能真正的检测打印机是否存在(即连线好了),
以及打印机的状态,特别是当出现错误时能响应消息,如缺纸,卡纸,短线
没墨等等

解决方案 »

  1.   

    Try
    打印代码
    except
     不存在
    end;
      

  2.   

    帅哥...请看<DELPHI5开发人员指南>
    上面有你想要的打印技术等..
    D6版本的没有噢..
      

  3.   

    //转的:检查 Printer.Printing 可以知道打印机是否正在打印。
    检查 Printer.Printers 可以知道当前系统安装哪些了打印机。
    如果用 Quick Report, 检查 QRPrinter.Status 或 
    QRPrinter.PrinterOK 可知道打印机是否就绪。
      

  4.   

    printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle);
       if DeviceHandle = 0 then
       begin
          Printer.PrinterIndex := Printer.PrinterIndex + 1;
          printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle);
       end;
       if DeviceHandle = 0 then
       begin
          application.MessageBox('没有发现打印机','错误',MB_OK+MB_ICONERROR);
          exit;
       end;
      

  5.   

    有一个记录型的是用来做这个的..
    上一次我在哪一个贴子上有发啊..
    function tform1.PrinterStatusText(Status: Integer): ='PRINTER_STATUS_BUSY';
        PRINTER_STATUS_DOOR_OPEN            :result:='PRINTER_STATUS_DOOR_OPEN';
        PRINTER_STATUS_ERROR                :result:='PRINTER_STATUS_ERROR';
        String;
    begin
      case status of
        PRINTER_STATUS_BUSY                 :result:='PRINTER_STATUS_BUSY';
        PRINTER_STATUS_DOOR_OPEN            :result:='PRINTER_STATUS_DOOR_OPEN';
        PRINTER_STATUS_INITIALIZING         :result:='PRINTER_STATUS_INITIALIZING';
        PRINTER_STATUS_IO_ACTIVE            :result:='PRINTER_STATUS_IO_ACTIVE';
        PRINTER_STATUS_MANUAL_FEED          :PRINTER_STATUS_ERROR                :result:='PRINTER_STATUS_ERROR';
        PRINTER_STATUS_INITIALIZING         :result:='PRINTER_STATUS_INITIALIZING';
        PRINTER_STATUS_IO_ACTIVE            :result:='PRINTER_STATUS_IO_ACTIVE';
        PRINTER_STATUS_MANUAL_FEED          :result:='PRINTER_STATUS_MANUAL_FEED';
        PRINTER_STATUS_NO_TONER             :result:='PRINTER_STATUS_NO_TONER';
        result:='PRINTER_STATUS_MANUAL_FEED';
        PRINTER_STATUS_NO_TONER             :result:='PRINTER_STATUS_NO_TONER';
        PRINTER_STATUS_NOT_AVAILABLE        :result:='PRINTER_STATUS_NOT_AVAILABLE';
        PRINTER_STATUS_OFFLINE              :result:='PRINTER_STATUS_OFFLINE';
        PRINTER_STATUS_OUT_OF_MEMORY        :result:='PRINTER_STATUS_OUT_OF_MEMORY';
        PRINTER_STATUS_OUTPUT_BIN_FULL      :PRINTER_STATUS_NOT_AVAILABLE        :result:='PRINTER_STATUS_NOT_AVAILABLE';
        PRINTER_STATUS_OFFLINE              :result:='PRINTER_STATUS_OFFLINE';
        PRINTER_STATUS_OUT_OF_MEMORY        :result:='PRINTER_STATUS_OUT_OF_MEMORY';
        PRINTER_STATUS_OUTPUT_BIN_FULL      :result:='PRINTER_STATUS_OUTPUT_BIN_FULL';
        PRINTER_STATUS_PAGE_PUNT            :result:='PRINTER_STATUS_PAGE_PUNT';result:='PRINTER_STATUS_OUTPUT_BIN_FULL';
        PRINTER_STATUS_PAGE_PUNT            :result:='PRINTER_STATUS_PAGE_PUNT';
        PRINTER_STATUS_PAPER_JAM            :result:='PRINTER_STATUS_PAPER_JAM';
       
        PRINTER_STATUS_PAPER_JAM            :result:='PRINTER_STATUS_PAPER_JAM';
        PRINTER_STATUS_PAPER_OUT            :result:='PRINTER_STATUS_PAPER_OUT';
        PRINTER_STATUS_PAPER_PROBLEM        : PRINTER_STATUS_PAPER_OUT            :result:='PRINTER_STATUS_PAPER_OUT';
        PRINTER_STATUS_PAPER_PROBLEM        :result:='PRINTER_STATUS_PAPER_PROBLEM';
        PRINTER_STATUS_PAUSED               :result:='PRINTER_STATUS_PAUSED';
        PRINTER_STATUS_PENDING_DELETION     :result:='PRINTER_STATUS_PENDING_DELETION';
        PRINTER_STATUS_PRINTING             :result:='PRINTER_STATUS_PRINTING';
        result:='PRINTER_STATUS_PAPER_PROBLEM';
        PRINTER_STATUS_PAUSED               :result:='PRINTER_STATUS_PAUSED';
        PRINTER_STATUS_PENDING_DELETION     :result:='PRINTER_STATUS_PENDING_DELETION';
        PRINTER_STATUS_PRINTING             :result:='PRINTER_STATUS_PRINTING';
        PRINTER_STATUS_PROCESSING           :result:='PRINTER_STATUS_PROCESSING';
        PRINTER_STATUS_TONER_LOW            :PRINTER_STATUS_PROCESSING           :result:='PRINTER_STATUS_PROCESSING';
        PRINTER_STATUS_TONER_LOW            :result:='PRINTER_STATUS_TONER_LOW';
        PRINTER_STATUS_USER_INTERVENTION    :result:='PRINTER_STATUS_USER_INTERVENTION';
        PRINTER_STATUS_WAITING              :result:='PRINTER_STATUS_WAITING';
        PRINTER_STATUS_WARMING_UP           :result:='PRINTER_STATUS_WARMING_UP';
      end;
    result:='PRINTER_STATUS_TONER_LOW';
        PRINTER_STATUS_USER_INTERVENTION    :result:='PRINTER_STATUS_USER_INTERVENTION';
        PRINTER_STATUS_WAITING              :result:='PRINTER_STATUS_WAITING';
        PRINTER_STATUS_WARMING_UP           :result:='PRINTER_STATUS_WARMING_UP';
      end;
    end;所有的状态都在上面了..你自已搞吧..
      

  6.   

    var
      prnhandle:thandle;
    begin
      if openprinter('Epson LQ-1600K',prnhandle,nil) then
        showmessage('success')
      else
        showmessage('no printer');
    end;