Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Druckjob aus dem Spooler löschen (https://www.delphipraxis.net/79101-druckjob-aus-dem-spooler-loeschen.html)

bernau 16. Okt 2006 14:31


Druckjob aus dem Spooler löschen
 
Da ich mit meinem printer.abort-Problem nicht so richtig weiter komme, habe ich mir gedacht, einen vorhandenen Druckauftrag aus dem Spooler direkt zu löschen.

Leider hat die Suchen-Funktion mir hier nicht weiter geholfen. (Bestimmt habe ich wieder die falschen Suchbegriffe verwendet)

Kennt jemand eine Procedure, die einen Druckjob aus dem Spooler löscht?


Gerd

Klaus01 16. Okt 2006 14:36

Re: Druckjob aus dem Spooler löschen
 
Vielleicht hift Dir das bei Deinem Problem weiter: -> http://groups.google.de/group/borlan...2a512a3f5153f4

Grüße
Klaus

Union 16. Okt 2006 14:38

Re: Druckjob aus dem Spooler löschen
 
Winspool.Setjob ist dafür vorgesehen

bernau 18. Okt 2006 10:11

Re: Druckjob aus dem Spooler löschen
 
Danke allen zusammen,


ich werde mich mal mit SetJob beschäftigen.

Schade, daß es dafür keinen Wrapper gibt :-(


Gerd

Union 18. Okt 2006 11:36

Re: Druckjob aus dem Spooler löschen
 
Wieso Wrapper? Aufzählen:
Delphi-Quellcode:
procedure EnumerateSpoolJobs(PrinterName : String; JobList : TStrings);
var
   aJobs : Array[0..99] of JOB_INFO_1;
   cbBuf : DWORD;
   pcbNeeded : DWORD;
   pcReturned : DWORD;
   hPrinter : THandle;
   i : integer;
begin
   OpenPrinter(PChar(PrinterName) ,hPrinter, Nil);
   cBBuf := 1000;
   EnumJobs(hPrinter, 0, 1000, 1, @aJobs, cbBuf, pcbNeeded, pcReturned);
   for i := 0 to pcReturned -1 do
   begin
      JobList.AddObject(Format('%d - %s %s %s %d' ,
          [aJobs[i].JobId,
           strpas(aJobs[i].pDocument),
           strpas(aJobs[i].pStatus),
           strpas(aJobs[i].pUserName),
           aJobs[i].TotalPages]), @aJobs[i]);
   end;
   ClosePrinter(hPrinter);
end;
Und Löschen:
Delphi-Quellcode:
procedure DeletePrintJob(PrinterName : string; const JobId : Cardinal);
var
   hPrinter : THandle;
begin
   OpenPrinter(PChar(PrinterName) ,hPrinter, Nil);
   SetJob(hPrinter, JobId, 0, 0, JOB_CONTROL_CANCEL); <<<<< Ich hoffe, für diese Zeile wird nicht noch ein "Wrapper" benötigt
   ClosePrinter(hPrinter);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz