AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Druckaufträge steuern
Thema durchsuchen
Ansicht
Themen-Optionen

Druckaufträge steuern

Offene Frage von "delphis spassbremse"
Ein Thema von delphis spassbremse · begonnen am 15. Jun 2007 · letzter Beitrag vom 15. Jul 2007
 
Benutzerbild von bitsetter
bitsetter

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

Re: Druckaufträge steuern

  Alt 15. Jul 2007, 23: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 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-2025 by Thomas Breitkreuz