![]() |
Drucker auslesen (Systemsteuerung --> Drucker & Faxge
aloha zusammen,
kann man mit delphi die drucker auslesen die man sich unter "Systemsteuerung --> Drucker und Faxgeräte" hinzugefügt hat irgendwie in eine listbox oder ähnliches auslesen? |
Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Delphi-Quellcode:
Weitere Infos zum einzelnen Drucker gibt es hier:
Listbox1.items.Assign(Printer.Printers);
![]() |
Re: Drucker auslesen (Systemsteuerung --> Drucker & F
ah cool, dankeschön...
werd ich mal ausprobieren :) |
Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Hallo Delphi-Praxis-Gemeinde,
bin gerade dabei mit Delphi zu experimentieren und bräuchte etwas Hilfe. Ich würde gern die installierten Drucker ( z.B. auf einen Server ) in mein kleines Programm einlesen. Nun hatte ich diesen Fred hier gelesen und komme damit aber nicht wirklich weiter. Eigentlich bräuchte ich nur den Namen und die dazugehörige IP. Und diese Daten dann in einem Arry. Listbox1.items.Assign(Printer.Printers); ist da ja zu wenig. Und der andere Link hier ist wieder etwas zu umfangreich. ..... HILfe :roteyes: GRuß Micha |
Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Hallo Micha,
schaue Dir mal meine Komponente ![]() Sollte etwas fehlen, dann melde Dich einfach oder füge es hinzu und sende mir eine Kopie der neuen Fassung zu. |
Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Hallo RWarnecke
vielen Dank erst mal, schau mir das gerne an! GRuß Micha |
AW: Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Hallo,
Zitat:
Was kann das sein? (Auf einem XP-Rechner funktioniert es!) |
AW: Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Zitat:
Erklärung: Es wird ein neuer Record von PPrinterInfo2 im Speicher angelegt, dann werden alle Daten aus dem Speicherblock Buffer übertragen und dann wird der Record an die Liste FAllInfos angehängt. Das ist die Idee hinter dem Code. In Wirklichkeit werden hier aber keine Daten kopiert, sondern hauptsächlich Zeiger. Und die Zeiger zeigen direkt in den Buffer hinein. Mit dem letzten Befehl FreeMem(Buffer); wird der Puffer allerdings freigegeben und die Zeiger verweisen auf freigegebenen Speicher. Es hängt vom Zufall ab, wie lange es dauert bis es eine Zugriffsverletzung gibt.
Delphi-Quellcode:
procedure TPrinterCustom.GetAllPrinterInfos;
var pcbNeeded : DWORD; pcReturned : DWORD; Buffer : PChar; PrinterInfo: PChar; I : Integer; PPrinter : PPrinterInfo2; Flags : DWORD; Level : Byte; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL; Level := 2; end else begin Flags := PRINTER_ENUM_LOCAL; Level := 2; end; EnumPrinters(Flags, nil, Level, nil, 0, pcbNeeded, pcReturned); GetMem(Buffer, pcbNeeded); EnumPrinters(Flags, nil, Level, PByte(Buffer), pcbNeeded, pcbNeeded, pcReturned); PrinterInfo := Buffer; for I := 0 to pcReturned - 1 do begin New(PPrinter); with PPrinterInfo2(PrinterInfo)^ do begin PPrinter^.pServerName := pServerName; // kopiere PChar-Zeiger PPrinter^.pPrinterName := pPrinterName; // dito PPrinter^.pShareName := pShareName; // ... PPrinter^.pPortName := pPortName; PPrinter^.pDriverName := pDriverName; PPrinter^.pComment := pComment; PPrinter^.pLocation := pLocation; PPrinter^.pSepFile := pSepFile; PPrinter^.pPrintProcessor := pPrintProcessor; PPrinter^.pDatatype := pDatatype; PPrinter^.pParameters := pParameters; PPrinter^.Attributes := Attributes; PPrinter^.Priority := Priority; PPrinter^.DefaultPriority := DefaultPriority; PPrinter^.StartTime := StartTime; PPrinter^.UntilTime := UntilTime; PPrinter^.Status := Status; PPrinter^.cJobs := cJobs; PPrinter^.AveragePPM := AveragePPM; FAllInfos.Add(Pointer(PPrinter)); Inc(PrinterInfo, SizeOf(TPrinterInfo2)); end; end; FreeMem(Buffer); end; |
AW: Re: Drucker auslesen (Systemsteuerung --> Drucker & F
Hallo,
Zitat:
Danke! Jörg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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