如何获取打印机状态,100分,急,在线等

解决方案 »

  1.   

    //从并行端口读取打印机状态
    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;
      

  2.   

    TPrinter的属性Aborted  判断用户是否放弃打印作业的布尔变量
    Canvas   当前页的画布
    Fonts    打印机所支持的字体列表
    Handle   代表打印机句柄的唯一数字
    Orientation  确定水平还是垂直打印
    PageHeight 打印页面的高度(象素)
    PageWidth  打印页面的宽度(象素)
    PageNumber 打印页的编号,其值随每次调用TPrinter.NewPage()递增
    PrinterIndex 表示从用户系统的可选打印机中选择打印机序号
    Printers     系统中可选打印机的列表
    Title        显示在打印管理器和被编目页中的文字-----------
    TPrinter的方法Abort    中止一个打印作业
    BeginDoc 开始一个打印作业
    EndDoc   结束一个打印作业(EndDoc 是当打印完成后结束打印作业,而   
             Abort是在打印完成之前中止打印作业)
    GetPriter 获得当前打印机的序号
    NewPage   强迫打印机开始打印新的一页并使PageCount 加 1
    SetPrinter指定一打印机为当前打印机
      

  3.   

    通过win32 API函数GetDeviceCaps()可以获得诸如打印机、绘图仪、显示器等设备的信息
    或 DeviceCapabilities()
      

  4.   

    var 
      PDevice:PChar;
      PDriver:PChar;
      PPort  :PChar;
      HDMode :THandle;
    begin
      GetMem(PDevice,cchDeviceName);
      GetMem(PDriver,MAX_PATH);
      GetMem(PPort,MAX_PATH);
      Printer.GetPrinter(ADevice,Adriver,Aport:PChar;var ADeviceMode:THandle);
      Label1.Caption :=PDevice;
      Label2.Caption :=PDriver;
      Label3.Caption :=PPort;
    end;
    試試!