1,183
社区成员
发帖
与我相关
我的任务
分享
uses winspool,printers;
procedure GetJobsList(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
NumJobs := 0;
if OpenPrinter(PChar(PrinterName),PrinterHandle,nil) then
begin
if EnumJobs(PrinterHandle,FirstJob,LastJob+1,InfoLevel,@Jobs,SizeOf(Jobs),BytesNeeded,NumJobs) then
begin
JobList.Clear;
if NumJobs = 0 then Exit;
for I := 0 to NumJobs-1 do
begin
JobList.Add( Format('%s(%s)',[StrPas(Jobs[I].pDocument),JobStatusText(Jobs[I].Status)]) );
end;
end;
AbortPrinter (PrinterHandle);
ClosePrinter(PrinterHandle);
end;
end;