Die Frage wäre ja, was beim zweiten Mal fehl schlägt ... OpenPrinter oder DeletePrinter.
Vermutlich OpenPrinter, weil der Printer ja gelöscht ist.
Aber ein Boolean sagt ja nun überhaupt nichts darüber aus, was nicht ging und vorallem warum es nicht gin.
Delphi-Quellcode:
procedure PE_DeletePrinterNow(PrinterName: string);
var
hPrinter : Cardinal;
PrinterDef: PRINTER_DEFAULTS;
begin
FillChar(PrinterDef, SizeOf(PrinterDef), #0);
PrinterDef.DesiredAccess := PRINTER_ALL_ACCESS;
if not OpenPrinter(PChar(PrinterName), hPrinter, @PrinterDef) then
RaiseLastOSError;
try
if not DeletePrinter(hPrinter) then
RaiseLastOSError;
finally
ClosePrinter(hPrinter);
end;
end;
Es schlägt DeletePrinter() fehl und nicht OpenPrinter() mit der Fehlermeldung ..
Zitat:
Systemfehler. Code: 1801.
Der Druckername ist unzulässig.
Eigentlich müsste ja OpenPrinter fehlschlagen tut es aber nicht und zu allem überfluss ist der Drucker immer noch vorhanden.