Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

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

Re: Druckerdokumentenlisteneintrag markieren

  Alt 9. Feb 2007, 02:31
Hallo,
hier habe ich ein kleines Beispiel, um bestimmte Druckaufträge zu pausieren. Ich hoffe mal, dass ist das was du wolltest.
Delphi-Quellcode:
uses
  WinSpool, Printers;

procedure TForm1.Button1Click(Sender: TObject);
const
  MaxJobs = 1024;
type TJobs= array of TJobInfo2;
var
  NoJobs: Integer;
  Needed, JobCounter: DWORD;
  i : Integer;
  Device, Driver, Port : array[0..255] of char;
  hPrinter, hDeviceMode : THandle;
  Buffer : Pointer;
begin
  Printer.PrinterIndex := -1;
  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
  if not WinSpool.OpenPrinter(@Device, hPrinter, nil) then
    Exit;

  GetPrinter(hPrinter, 2, nil, 0, @Needed);
  GetMem(Buffer, Needed);
  if GetPrinter(hPrinter, 2, Buffer, Needed, @Needed) then
    if TPrinterInfo2A(Buffer^).pPrinterName <> nil then
      Caption:= 'Druckername: '+TPrinterInfo2A(Buffer^).pPrinterName;

  NoJobs:= 100;
  EnumJobs(hPrinter, 0, NoJobs, 2, nil, 0, Needed, JobCounter);
  GetMem(Buffer, Needed);

  if EnumJobs(hPrinter, 0, NoJobs, 2, Buffer, Needed, Needed, JobCounter) then
    begin
    Caption:= Caption+ ' Anzahl der Druckaufträge: '+ inttostr(JobCounter);
      for i:= 0 to JobCounter- 1 do
        begin
        if TJobInfo2(ptr(cardinal(Buffer)+ i* SizeOf(TJobInfo2))^).pDocument<> nil then
          if messagebox(0, PChar('Soll der Druckauftrag der Datei "'+ TJobInfo2(ptr(cardinal(Buffer)+i* SizeOf(TJobInfo2))^).pDocument+ '" pausieren?')
            ,'Nachfrage', MB_YESNO or MB_ICONQUESTION)=idYES then
            SetJob(hPrinter, TJobInfo2(ptr(cardinal(Buffer)+ i* SizeOf(TJobInfo2))^).JobId, 0, nil, JOB_CONTROL_PAUSE);//winspool.JOB_CONTROL_RESUME
        end;
    end;
  FreeMem(Buffer, Needed);
  WinSpool.ClosePrinter(hPrinter);
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat