Kolejka drukowania

0

Nie wie ktoś, jak usunąć zadanie z kolejki wydruku danej drukarki? Znam jej nazwę, nazwę dokumentu, numer dokumentu. W sumie wiem o nim wszystko, ale nie wiem, jak to zrobić. Jest biblioteka WinSpool z funkcją AbortDoc, ale wymaga ona uchwytu do dokumentu, który (z tego co znalazłem) można dostać tylko dodają nowy, a ja chcę usunąć zadanie dodane przez inna aplikację...

Ratunku!

0

Tu masz napisane

0

To jest niestety usuwanie całej kolejki. To niestety mi nie pasuje, bo ja musze usunąć konkretne zadanie...

0

Napisałem coś takiego (działa):

TfMain = class(TForm)
    ...
    mHistory: TMemo;
    ...

procedure TfMain.UsuwanieZadania(ID :Word);

const
   defaults: TPrinterDefaults = (
      pDatatype : nil;
      pDevMode  : nil;
      DesiredAccess : PRINTER_ACCESS_USE or PRINTER_ACCESS_ADMINISTER
   );

var hPrinter: THandle;
begin
   try
      mHistory.Lines.Add('Otwieranie drukarki...');
      if OpenPrinter(PChar(elrDane.ArgsBuffer[3]), hPrinter, nil) then
         mHistory.Lines[mHistory.Lines.Count-1]:=
            mHistory.Lines[mHistory.Lines.Count-1]+'  [OK]'
      else
         mHistory.Lines[mHistory.Lines.Count-1]:=
            mHistory.Lines[mHistory.Lines.Count-1]+'  [BŁĄD]';
      mHistory.Lines.Add('Usuwanie zadania z listy zadań...');
      if SetJob(hPrinter,ID,0,nil,JOB_CONTROL_CANCEL) then
         mHistory.Lines[mHistory.Lines.Count-1]:=
            mHistory.Lines[mHistory.Lines.Count-1]+'  [OK]'
      else
         mHistory.Lines[mHistory.Lines.Count-1]:=
            mHistory.Lines[mHistory.Lines.Count-1]+'  [BŁĄD]';
   finally
      mHistory.Lines.Add('Zamykanie drukarki...');
      if ClosePrinter(hPrinter) then
         mHistory.Lines[mHistory.Lines.Count-1]:=
            mHistory.Lines[mHistory.Lines.Count-1]+'  [OK]'
      else
         mHistory.Lines[mHistory.Lines.Count-1]:=
            mHistory.Lines[mHistory.Lines.Count-1]+'  [BŁĄD]';
   end;
end;
0
Viking napisał(a)

To jest niestety usuwanie całej kolejki. To niestety mi nie pasuje, bo ja musze usunąć konkretne zadanie...

ta???

"If you need to be more specific look at the API functions EnumJobs, which allows you to enumerate the jobs in the printer queue, and SetJob, which allows you to change a jobs status, even cancel it"

1 użytkowników online, w tym zalogowanych: 0, gości: 1