Thema: Delphi "kontrolliertes" Drucken

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: "kontrolliertes" Drucken

  Alt 8. Jul 2010, 18:50
Das Programm könnte die Anzahl der Aufträge im Spooler abfragen.
In meiner Software verhindere ich so, dass hunderte Druckjobs im Spooler hängen weil der Drucker nicht bereit ist.
Wenn mehr als 3 Jobs (einstellbar) im Spooler sind, geht ein Fenster auf und der Benutzer kann entscheiden, ob er trotzdem weiterdrucken oder warten möchte bis das Limit unterschritten wurde.

Delphi-Quellcode:
function PrinterJobsCount(const PrinterName : String) : Integer;
var
   hPrinter : THandle;
   PPI2 : PPrinterInfo2;
   dwNeeded : DWORD;
begin
   Result := -1;

   // open the printer
   if NOT OpenPrinter(PChar(PrinterName), hPrinter, Nil) then
      raise EPrinter.Create('Can''t open printer '+PrinterName+
         #13+SysErrorMessage(GetLastError));

   try
      // just get the amount of needed memory
      GetPrinter(hPrinter, 2, Nil, 0, @dwNeeded);

      // allocate the memory
      GetMem(PPI2, dwNeeded);
      try
         // get the printer information
         if NOT GetPrinter(
            hPrinter, // handle to printer
            2, // information level
            PPI2, // printer information buffer
            dwNeeded, // size of buffer
            @dwNeeded // bytes received or required
            )
          then
            raise EPrinter.Create('Error getting information for printer: '+
               PrinterName+#13+SysErrorMessage(GetLastError));

         Result := PPI2^.cJobs;
      finally
         FreeMem(PPI2);
      end;
   finally
      ClosePrinter(hPrinter);
   end;
end;
Andreas

Geändert von shmia ( 8. Jul 2010 um 18:55 Uhr) Grund: + Sourcecode
  Mit Zitat antworten Zitat