得到本机或者网络上共享打印机的状态和打印任务

本文介绍了一种通过编程方式获取本地或网络上共享打印机的状态及打印任务的方法。使用Delphi语言实现,包括定义不同打印任务状态的文字表示,并通过枚举打印作业来获取具体的文档名及其当前状态。

//得到本机或者网络上共享打印机的状态和打印任务
//author:ginsonic
//zdcnow download from E-E

use winspool;

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,NumJobs:Cardinal;
   I: 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(Statu
s)]));
     end;
     ClosePrinter(PrinterHandle);
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   GetJobs('\\rcsrv\HP LaserJet 6L',Memo1.Lines);
end; 

转载于:https://www.cnblogs.com/lzj1981/archive/2013/05/01/3053342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值