delphi编程获取打印机的打印任务列表

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Printers, WinSpool, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); function PrinterStatusText(Status: Integer): String; begin case Status of 0: Result := 'Waiting'; JOB_STATUS_PAUSED: Result := 'Paused'; JOB_STATUS_ERROR: Result := 'Error'; JOB_STATUS_DELETING: Result := 'Deleting'; JOB_STATUS_SPOOLING: Result := 'Spooling'; JOB_STATUS_PRINTING: Result := 'Printing'; JOB_STATUS_OFFLINE: Result := 'Offline'; JOB_STATUS_PAPEROUT: Result := 'Paper Out'; JOB_STATUS_PRINTED: Result := 'Printed'; JOB_STATUS_DELETED: Result := 'Deleted'; JOB_STATUS_BLOCKED_DEVQ: Result := 'Blocked'; JOB_STATUS_USER_INTERVENTION: Result := 'User Intervention'; JOB_STATUS_RESTART: Result := 'Restart'; else Result := 'Status ' + IntToStr(Status); end; end; // procedure GetJobs(PrinterName: String; JobList: TStrings); const InfoLevel = 1; FirstJob = 0; LastJob = 19; var Jobs: array [FirstJob..LastJob] of TJobInfo1; PrinterHandle, BytesNeeded, I, NumJobs:cardinal;// Integer; begin if OpenPrinter(PChar(PrinterName),PrinterHandle,nil) then begin if EnumJobs(PrinterHandle,FirstJob,LastJob+1,InfoLevel,@Jobs,SizeOf(Jobs),BytesNeeded,NumJobs) then begin JobList.Clear; for I := 0 to NumJobs-1 do with Jobs[I] do JobList.Add(Format('%s(%s)',[StrPas(pDocument),PrinterStatusText(Status)])); end; ClosePrinter(PrinterHandle); end; end; begin GetJobs('hp deskjet 3500 series',Memo1.Lines); end; end.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值