![]() |
Drucker entfernen
Hallo DPler,
ich versuche mich gerade an einer Möglichkeit Drucker aus einer eigenen Anwendung heraus zu entfernen. Ich habe da auf ![]()
Delphi-Quellcode:
Auflistung aller Drucker im System
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;
Delphi-Quellcode:
Drucker entfernen
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;
Delphi-Quellcode:
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.
procedure TForm2.Button1Click(Sender: TObject);
begin if RemovePrinter(ListBox1.Items[ListBox1.ItemIndex]) then ShowMessage('Ok') else ShowMessage('Failed'); end; |
AW: Drucker entfernen
Versuche mal, ob der Drucker verschwindet, wenn du die Druckerwarteschlange neustartest.
|
AW: Drucker entfernen
Zitat:
Vermutlich OpenPrinter, weil der Printer ja gelöscht ist. :stupid: Aber ein Boolean sagt ja nun überhaupt nichts darüber aus, was nicht ging und vorallem warum es nicht gin. :roll:
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; |
AW: Drucker entfernen
Zitat:
|
AW: Drucker entfernen
Zitat:
Zitat:
|
AW: Drucker entfernen
Was genau willst du eigentlich löschen, bzw. was soll dadurch erreicht werden?
Zitat:
sondern nur eines der "vielen" Schnittstellenobjekte. DeletePrinter ist nur die Umkehrfunktion vom AddPrinter. ![]() |
AW: Drucker entfernen
Zitat:
|
AW: Drucker entfernen
|
AW: Drucker entfernen
Zitat:
Zitat:
|
AW: Drucker entfernen
Naja, mehr als den Treiber wirst Du in Software niemals los werden können, es sei denn Du steuerst damit eine Strahlenkanone oder so. ;)
Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz