Thema: Delphi Drucker entfernen

Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Drucker entfernen

  Alt 17. Aug 2017, 11:22
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.
  Mit Zitat antworten Zitat