Server wird heruntergefahren: Reagieren?

Wenn man den 4D-Server beendet, bekommen alle Clients 10 Minuten lang einen Shutdown-Dialog:

[]30883640;“Der Server wird … heruntergefahren…”[/]

Ich würde gern am Client dann automatisch noch einiges speichern und dann beenden.
Dazu müsste ich aber herausfinden, ob gerade dieser Shutdown-Dialog angezeigt wird.

Gibt es eine Möglichkeit, das abzufragen?

Mit PROCESS ABORTED geht es nicht.

Auch die Idee, dass der Server in ON SERVER SHUTDOWN die Clients anpingt, geht nicht, weil ON SERVER SHUTDOWN erst am Ende der 10 Minuten gefeuert wird.

Auch die Idee, mit WINDOW LIST den Shutdown-Dialog zu erkennen, habe ich nicht hinbekommen, weil das Fenster keine Eigenschaften hat, an denen man es erkennen könnte (kein Titel, kein spezieller Prozess-Name).

eigentlich gibt es eine Menge Infos, die Sie verwenden könnten:

WINDOW LIST gibt dieses Fenster immer als erstes Fenster im Array zurück. Es ist immer über allen anderen Fenstern, daher also das erste im Array.

Window kind gibt 14 zurück, Floating Window. Ok, haben Sie selbst ein eigenes, dann mag das nicht reichen.

Window process ist 2, der Internal Timer Process am Client. Ihr eigenes Floating hat sicher eine andere Prozeßnummer.

PROCESS PROPERTIES gibt Ihnen dazu verschiedene Infos.

Ich denke, so sollten Sie weiterkommen.

: Achim PESCHKE

eigentlich gibt es eine Menge Infos, die Sie verwenden könnten
Mit diesen Infos habe ich bis 4Dv15 das Shutdown-Fenster zuverlässig erkannt.
Seit 4Dv17 haben aber auch andere 4D-eigene Fenster dieselben Eigenschaften.
Diese werden somit fälschlich als Shutdown-Fenster erkannt. Beispiele:

  • Die Verlaufs-Anzeige bei Sequentieller Suche
  • Die Verlaufs-Anzeige beim Berichtseditor
: Achim PESCHKE

WINDOW LIST gibt dieses Fenster immer als erstes Fenster im Array
zurück.
Die Verlaufsanzeigen von Berichtdeditor und Seq. Suche erscheinen ebenfalls als erste im Array.

: Achim PESCHKE

Window kind gibt 14 zurück
Die Verlaufsanzeigen von Berichtdeditor und Seq. Suche haben ebenfalls 14 als Window Kind.

: Achim PESCHKE

Window process ist 2, der Internal Timer Process
Die Verlaufsanzeigen von Berichtdeditor und Seq. Suche haben ebenfalls “Interner Timer Prozess”.

: Achim PESCHKE

Ich denke, so sollten Sie weiterkommen.
Leider nein…
Deshalb hatte ich gehofft, dass es einen anderen Ansatz gibt, sowas wie PROCESS ABORTED.
Aktuell benutze ich weitere Kriterien, die ein False-Positive hoffentlich verhindern:

  • Erst wenn das Shutdown-Fenster mindestens 10 Sekunden lang angezeigt wird.
  • Nur wenn das Fenster seitdem vom User nicht verschoben wurde.
  • Berichtseditor-Aufrufe schütze ich mit einer Interprozess-Variablen.
  • Einige sequentiellen Suchen kann ich auch mit dieser Interprozess-Variablen schützen.
    Aber das Ganze ist irgendwie Gefrickel…

dann fehlts mir da auch die zündende Idee.

Gefrickel würde mir auch noch einfallen. Die Ablaufanzeigen haben andere Fenstergrößen. Das kann vielleicht ein einfaches und eindeutiges Kriterium sein.

Vielleicht hilft dieser TechTip: https://kb.4d.com/assetid=77516

Oder im Forum gibt es ein paar Ergebnisse, wenn Sie unter allen Posts nach “quit server dialog client” suchen.

Ohne es selbst getestet zu haben:

wie wäre es mit einem Serverprozess die Fenster des Servers zu analysieren.
Dann Bsp. mit Semaphore Info weiter geben.

Oder geht eventuell “Window List” am Server nicht?

Gruß
Herbert ( Schuler )

: Herbert SCHULER

… Fenster des Servers zu analysieren … Dann … mit Semaphore …
weiter geben.

Ja, so mache ich es jetzt auch (mit GET PROCESS VARIABLE statt Semaphore),
nachdem immer weitere nicht-unterscheidbare Fenster am Client hinzukamen.

Ich hoffe, dass es auf dem Server nicht so viele Überraschungs-Fenster gibt (Das würde hier dann alle User rauswerfen).