Einzelnen Beitrag anzeigen

Benutzerbild von neuronet
neuronet

Registriert seit: 16. Aug 2005
Ort: Berlin
104 Beiträge
 
Delphi 2010 Architect
 
#1

Anzahl gedruckter Seiten lässt sich nicht ermitteln

  Alt 16. Nov 2005, 12:49
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.
Andreas
--- Der Wert der Leistung liegt im Geleisteten --- Albert Einstein

Mein erstes Baby: Apple I - Der Rechner ist genauso alt wie ich... Und steht noch immer im Keller...
  Mit Zitat antworten Zitat