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;