Hi!
Habe folgendes Problem:
Bei uns im Netzwerk soll festgehalten werden, welcher Arbeitsplatz mit welchem User wie viele Seiten ausgedruckt hat.
Funktioniert mit dem folgenden Code im Prinzip ja auch ganz gut:
Delphi-Quellcode:
procedure TForm3.FormShow(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; // eigene Funktion
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;
SG.RowCount:=numJobs+1;
if numJobs = 0 then
//
else
for i := 0 to Pred(numJobs) do begin
if ((pJ^[i].Status=16) or (pJ^[i].Status=128)) then begin
SG.Cells[0,i+1]:=inttostr(pJ^[i].JobId);
SG.Cells[1,i+1]:=pJ^[i].pMachineName;
SG.Cells[2,i+1]:=pJ^[i].pUserName;
SG.Cells[3,i+1]:=inttostr(pJ^[i].TotalPages);
SG.Cells[4,i+1]:=pJ^[i].pDocument;
end;
end;
finally
ClosePrinter(hPrinter);
end;
end;
Nun kommt es aber ab und an vor, dass ich folgende Ergebnisse bekomme:
pJ^[i].pDocument = 'druckerdatendatei von remotesystem'
pJ^[i].TotalPages = 0
obwohl ich haargenau weiss, dass ein Dokument mit z.B. 5 Seiten gedruckt wurde.
Auch in der Druckerwarteschlange wird das gleiche Angezeigt (0 Seiten).
Wie bekommt ich nun heraus, wie viele Seiten letztendlich gedruckt wurden???
Danke schon mal im Voraus.