急急!!!求如何取得打印队列状态!!在线等!!帮帮忙啊!!(100分)

  • 主题发起人 主题发起人 求知学人
  • 开始时间 开始时间

求知学人

Unregistered / Unconfirmed
GUEST, unregistred user!
如何确定队列中任务的状态,如果是在打印中的任务,记输 1 ,
如其他状态的都不记数,急切盼望各位大侠不吝赐教,急等,谢谢
我身上有积分152 就这么多了,还有专家分51分,反正,我全给了,
求求各位大哥,大姐了啊,要快啊!!!
 
就没一个人能看看我的提问啊,给点面子啊,真的急啊
 
uses
Winspool, Printers;

function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port: array[0..255] of Char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then

RaiseLastWin32Error;
end;

function SavePChar(p: PChar): PChar;
const
error: PChar = 'Nil';
begin

if not Assigned(p) then

Result := error
else

Result := p;
end;

procedure TForm1.Button1Click(Sender: TObject);
type
TJobs = array [0..1000] of JOB_INFO_1;
PJobs = ^TJobs;
var
hPrinter: THandle;
bytesNeeded, numJobs, i: Cardinal;
pJ: PJobs;
begin

hPrinter := GetCurrentPrinterHandle;
try
EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded,
numJobs);
pJ := AllocMem(bytesNeeded);
if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded,
bytesNeeded, numJobs) then

RaiseLastWin32Error;

memo1.Clear;
if numJobs = 0 then

memo1.Lines.Add('No jobs in queue')
else

for i := 0 to Pred(numJobs)do

memo1.Lines.Add(Format('Printer %s, Job %s, Status (%d): %s',
[SavePChar(pJ^.pPrinterName), SavePChar(pJ^.pDocument),
pJ^.Status, SavePChar(pJ^.pStatus)]));
finally
ClosePrinter(hPrinter);
end;

end;
 
谢谢了,各位
 
谢谢,kaida
 
后退
顶部