In der
Unit Printers.pas holt Delphi sich die Liste der zur Verfügung stehenden Drucker mit der
API-Funktion
EnumPrinters. Für NT und Nachfolger (2000, XP, 2003) geschieht dies mit Level 4, für ältere System (95, 98, Me) mit Level 5 (nur lokale Drucker).
In der PRINTER_INFO_4-Struktur (wg. Level 4) steht nur der Druckername (sowie der Servername) - das reicht aus, um den Drucker zu öffnen (insbesondere im Netz).
Der PrintDialog ruft die SetPrinter Methode des TPrinter-Objekts auf und übergibt dabei die zusätzliche Information. Allerdings wohl nur für den aktuellen Drucker.
Wenn du die Infos wirklich brauchst, dann rufe selbst EnumPrinters mit Level 5 auf - dann kriegst du auch den Port (Beispielcode kannst du dir in Printers.pas von Delphi ansehen).