window API GetPrinter 有关问题求解

window API GetPrinter 问题求解。
Delphi(Pascal) code
unit Umain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons,winspool,Printers, ExtCtrls;

type
  TForm1 = class(TForm)
    BitBtn2: TBitBtn;
    LabeledEdit1: TLabeledEdit;
    CheckBox1: TCheckBox;
    procedure BitBtn2Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type days=(sun,mon,tue,wed,thu,fri,sat);

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.BitBtn2Click(Sender: TObject);
var
    pinfo: array[0..32] of _PRINTER_INFO_2a;
    pprt,a: Cardinal;
    b:DWORD;
    MyPrinter,MyHandle       : THandle;
    MyDevice,MyDriver,MyPort: array [0..255] of Char;
begin
    if CheckBox1.Checked then
    begin
        Printer().PrinterIndex := -1;
        Printer().GetPrinter(MyDevice,MyDriver,MyPort,MyHandle);
    end
    else
    begin
        StrCopy(@MyDevice,PChar(LabeledEdit1.Text));
    end;

    if OpenPrinter(MyDevice,pprt,nil) then
    begin
        a:=sizeof(pinfo);
        b:=84;
        if getprinter(pprt,2,@pinfo,a,@b) then
        begin
            showmessage(pinfo[0].pPrinterName+' ststus:'+inttostr(pinfo[0].Status));
            case pinfo[0].Status of
                0:                              //PRINTER_STATUS_OK:
                    showmessage('正常');
                PRINTER_STATUS_PAUSED            :    // $00000001;
                    showmessage('暂停');
                PRINTER_STATUS_ERROR             :    // $00000002;
                    showmessage('错误');
                PRINTER_STATUS_PENDING_DELETION  :    // $00000004;
                    showmessage('暂停');
                PRINTER_STATUS_PAPER_JAM         :    // $00000008;
                    showmessage('夹纸');
                PRINTER_STATUS_PAPER_OUT         :    // $00000010;
                    showmessage('暂停');
                PRINTER_STATUS_MANUAL_FEED       :    // $00000020;
                    showmessage('手动送纸');
                PRINTER_STATUS_PAPER_PROBLEM     :    // $00000040;
                    showmessage('纸张问题');
                PRINTER_STATUS_OFFLINE           :    // $00000080;
                    showmessage('脱机');
                PRINTER_STATUS_IO_ACTIVE         :    // $00000100;
                    showmessage('暂停');
                PRINTER_STATUS_BUSY              :    // $00000200;
                    showmessage('忙');
                PRINTER_STATUS_PRINTING          :    // $00000400;
                    showmessage('打印中');
                PRINTER_STATUS_OUTPUT_BIN_FULL   :    // $00000800;
                    showmessage('暂停');
                PRINTER_STATUS_NOT_AVAILABLE     :    // $00001000;
                    showmessage('无效');
                PRINTER_STATUS_WAITING           :    // $00002000;
                    showmessage('等待');
                PRINTER_STATUS_PROCESSING        :    // $00004000;
                    showmessage('处理');
                PRINTER_STATUS_INITIALIZING      :    // $00008000;
                    showmessage('正在初始化');
                PRINTER_STATUS_WARMING_UP        :    // $00010000;
                    showmessage('预热');
                PRINTER_STATUS_TONER_LOW         :    // $00020000;
                    showmessage('墨少');
                PRINTER_STATUS_NO_TONER          :    // $00040000;
                    showmessage('缺墨');
                PRINTER_STATUS_PAGE_PUNT         :    // $00080000;
                    showmessage('暂停');
                PRINTER_STATUS_USER_INTERVENTION :    // $00100000;
                    showmessage('用户干涉');
                PRINTER_STATUS_OUT_OF_MEMORY     :    // $00200000;
                    showmessage('超出内存');
                PRINTER_STATUS_DOOR_OPEN         :    // $00400000;
                    showmessage('门打开');
                PRINTER_STATUS_SERVER_UNKNOWN    :    // $00800000;
                    showmessage('不明服务');
                PRINTER_STATUS_POWER_SAVE        :    // $01000000;
                    showmessage('节能');
               else showmessage('print end or no print');
            end;
        end
        else
        begin
            showmessage(SysErrorMessage(GetLastError()));
        end;
        ClosePrinter(pprt);
    end;

end;


procedure TForm1.CheckBox1Click(Sender: TObject);
begin
    LabeledEdit1.Enabled:=  not    CheckBox1.Checked;
end;

end.