Thema: Delphi Druckaufträge steuern

Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Druckaufträge steuern

  Alt 16. Jul 2007, 00:21
Zitat von delphis spassbremse:
Aber ich denke, dass sich es bei diesem Problem einfacher zu relasieren ist,
weil ich nur den Druckauftrag Starten / Anhalten / Löschen und die Seitenzahl auslesen möchte.
Hallo,
Delphi-Quellcode:
uses
  WinSpool, Printers;

procedure SetPrinterJob;
type
  PJobs = ^TJobs;
  TJobs = array[0..0]of TJobInfo2;
var
  Needed, JobCounter : DWORD;
  i : Integer;
  Device, Driver, Port : array[0..255] of char;
  hPrinter, hDeviceMode : THandle;
  Buffer : Pointer;
  Job : PJobs;
const
  NoJobs = 100;
begin
  Printer.PrinterIndex := -1;
  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
  if WinSpool.OpenPrinter(@Device, hPrinter, nil) then
  begin
    EnumJobs(hPrinter, 0, NoJobs, 2, nil, 0, Needed, JobCounter);
    GetMem(Buffer, Needed);
    try
      Job := Buffer;
      if EnumJobs(hPrinter, 0, NoJobs, 2, Buffer, Needed, Needed, JobCounter) then
        begin
        //Form1.Caption := Caption+ ' Anzahl der Druckaufträge: ' + inttostr(JobCounter);
          for i := 0 to JobCounter - 1 do
            begin
            if Job[i].pDocument <> nil then
              if messagebox(0, PChar('Soll der Druckauftrag des Dokuments "' + Job[i].pDocument + '" mit ' + inttostr( Job[i].TotalPages)+ ' zu druckenden Seiten abgebrochen werden?')
                ,'Nachfrage', MB_YESNO or MB_ICONQUESTION) = idYES then
                SetJob(hPrinter, Job[i].JobId, 0, nil, winspool.JOB_CONTROL_DELETE);//JOB_CONTROL_PAUSE
            end;
        end;
    finally
      FreeMem(Buffer, Needed);
    end;
    WinSpool.ClosePrinter(hPrinter);
  end;
end;
Hier soll eine Nachfrage erscheinen ob der Druckauftrag mit der angezeigten Seitenzahl des Standarddruckers abgebrochen werden soll.

Wenn du auf eingehende Druckaufträge auch noch reagieren möchtest, dann könntest du dich ja mal mit FindFirstPrinterChangeNotification und FindNextPrinterChangeNotification beschäftigen
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat