Hallo DPler,
ich versuche mich gerade an einer Möglichkeit Drucker aus einer eigenen Anwendung heraus zu entfernen. Ich habe da auf
Delphi-Treff etwas passendes gefunden, jedoch funktioniert das nicht.
Delphi-Quellcode:
function PE_DeletePrinterNow(pPrinterName: PChar):BOOL;
var
hPrinter : Cardinal;
PrinterDef: PRINTER_DEFAULTS;
begin
Result := FALSE;
FillChar(PrinterDef, sizeof(PrinterDef), #0);
PrinterDef.DesiredAccess := PRINTER_ALL_ACCESS;
if OpenPrinter(pPrinterName, hPrinter, @PrinterDef) then
begin
if DeletePrinter(hPrinter) then Result := TRUE;
ClosePrinter(hPrinter);
end;
end;
Auflistung aller Drucker im System
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var
Index: Integer;
begin
for Index := 0 to Printer.Printers.Count-1 do
begin
ListBox1.Items.Add(Printer.Printers[Index]);
end;
end;
Drucker entfernen
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
if RemovePrinter(ListBox1.Items[ListBox1.ItemIndex]) then
ShowMessage('Ok')
else
ShowMessage('Failed');
end;
Merkwürdig ist das beim ersten Versuch die Funktion einen Erfolg meldet, der Drucker bleibt aber im System erhalten, danach schlägt der jeder erneute Aufruf fehl. Probiert habe ich das ganze unter Windows 7, später soll die Software aber hauptsächlich unter Windows 10 laufen.