Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi LAN - Drucker (https://www.delphipraxis.net/94735-lan-drucker.html)

neXus111 26. Jun 2007 10:11


LAN - Drucker
 
Hallo!

Hätte mal ne Frage!

Wien kann ich den Druckername und den Port eines LAN - Druckers auslesen.

Danke schon im Voraus!

mkinzler 26. Jun 2007 11:15

Re: LAN - Drucker
 
Was meinst du mit lan-Drucker?
z.B. SNMP, HTTP, ...

Olli 1. Jul 2007 01:28

Re: LAN - Drucker
 
Ich kann mkinzler nur beipflichten. Es gibt zwar gewisse Standards, aber die Frage ist hier auch, ob der Drucker-"Port" schon installiert ist. Normalerweise braucht's dazu eine Usermode-DLL des Herstellers und die kümmert sich um die Details. Übrigens meine ich "Port" oben nicht als TCP/IP-Port.

hathor 1. Jul 2007 16:54

Re: LAN - Drucker
 
Delphi-Quellcode:

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, Printers, StdCtrls, Registry, WinSpool; // einiges kann man entfernen...

Function Get_Printerport(Printername: string): string;
var
  Reg: TRegistry;
  p: Integer;
begin
  Reg := TRegistry.Create;
  with Reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    if OpenKey('\Software\Microsoft\Windows NT\CurrentVersion\Devices\', True) then
    begin
      if ValueExists(Printername) then
      begin // The reg Key value may look like "winspool,LPT1:"
        Result := ReadString(Printername);
        p     := Pos(',', Result);
        Result := Copy(Result, p + 1,Length(Result) - p);
      end;
    end;
    CloseKey;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin
Memo1.Clear;
ListBox1.Items := Printer.Printers;

for i := 0 to ListBox1.Count - 1 do
begin
   Memo1.Lines.Add(ListBox1.Items.Strings[i]+' : '+ Get_Printerport(ListBox1.Items.Strings[i]));
end;
//Memo1.Lines.Add('Active printer is : '+ Printer.Printers[Printer.PrinterIndex]);
//Memo1.Lines.Add('Port : '+ Get_Printerport(Printer.Printers[Printer.PrinterIndex]));
end;
Beispiele:

Memo1:

ScanSoft PDF Create! : Ne00:
Samsung CLP-510N(TCP) : Ne01:
Panasonic KX-P8415-LPT1 : LPT1:
Panasonic KX-P8415 (USB) : Ne02:
Panasonic KX-P8415 (LPT1) : LPT1:
Panasonic KX-P8415 (AXIS-200) : Ne03:
P-COLOR-AXIS-200 : Ne04:
Microsoft Office Document Image Writer : Ne05:
FreePDF XP : Ne06:
FinePrint : FPR5:
\\http://192.168.1.201\CLP-510N : Ne07:
Active printer is : \\http://192.168.1.201\CLP-510N
Port : Ne07:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 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