Einzelnen Beitrag anzeigen

gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

Druckerindex außerhalb des zulässigen Bereichs

  Alt 13. Jul 2020, 17:20
Hallo Delphi-Gemeinde,

meine Anwendung läuft seit einigen Jahren auf Terminalservern.
Seit kurzem (Server 2016) habe ich das Problem, dass das Drucken nicht mehr korrekt funktioniert.
Die Anwendung druckt entweder auf dem falschen Drucker oder es wirft mit der Exception "Druckerindex außerhalb des zulässigen Bereichs."

Etwas genauer:
Beim (nach) dem Drucken merke ich mir den Namen des Drucker auf dem gedruckt wurde, um den Drucker beim nächsten Druck unabhängig vom Standard-Drucker voreinstellen zu können. Das ist eine Anforderung an die Software. Es sind so ca. 10 Drucker im Einsatz für unterschiedliche Zwecke und der Nutzer soll nicht ständig den passenden Drucker auswählen müssen.
Also packe ich alle verfügbaren Drucker in eine Combobox (damit der Nutzer ggf. wechseln kann) und selektierte den zuletzt verwendeten Drucker anhand des Namens vor. Sich lediglich den Index des Druckers zu merken, hat schon andere/ähnliche Effekte hervorgerufen, da auch ein Trennen und Neu-Verbinden der RDP-Sitzung die Folge hat, das sich die Reihenfolge sprich, die Drucker-Indizes ändern (können).

Ich nutze hierfür das Objekt bzw. die Unit Printer.pas aus Rio.

Anfänglich, also nach dem Programm-Start, funktioniert das Drucken fehlerfrei.
Nach einiger Zeit, so 2..3 Stunden, treten Probleme (wie oben beschrieben) auf.
Die automatische Standard-Drucker-Verwaltung von Win-10 ist per Gruppenrichtlinie auf jedem PC und jeder RDP-Sitzung deaktiviert, aber selbst wenn nicht, dürfte das keine Auswirkung haben.

Irgendwo habe ich gelesen, dass das evtl. mit der Art und Weise zusammenhängt, wie die Drucker am Server installiert sind.
Entweder per Netzwerkfreigaben oder als Lokaler Drucker per IP + Port.
Bei Netzwerk-Freigaben könne es passiere, dass, wenn ein Drucker offline geht, der Server die Liste der verfügbaren Drucker in den RDP-Sitzungen aktualisiert.
Bei lokalen Druckern im Terminal-Server wäre das nicht der Fall, ... wieso auch immer.

Kann es sein, dass meine Anwendung damit nicht klar kommt?
Muß man der Printer.pas irgendwie mitteilen, dass sie sich aktualisieren soll? Wenn ja, wie?

Hat irgendwer ne Idee, wo hier der Hase im Pfeffer liegt?

Bin für jeden Tipp dankbar.
  Mit Zitat antworten Zitat