Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Vollbildanwendung im Autostart (https://www.delphipraxis.net/187160-vollbildanwendung-im-autostart.html)

Sven M. 2. Nov 2015 14:55

Vollbildanwendung im Autostart
 
Moin,
ich habe eine Client-Software, die auf dem Rechner im Vollbild laufen soll - und beim Start des Rechners automatisch gestartet werden soll. Dazu habe ich eine entsprechende Verknüpfung im Autostart-Menü angelegt.

Die Eigenschaften werden zur Designzeit gesetzt:
Delphi-Quellcode:
WindowState:=wsMaximized;
BorderStyle:=bsNone;
Nun habe ich das Problem, das seit einem Update auf einem Rechner (Software läuft auf drei Rechnern momentan) beim Systemstart unten die Taskleiste zu sehen ist, das Programm läuft aber im Vollbild, schimmert durch die Leiste durch.

Durch einen Klick auf das Fenster oder durch Drücken der Leertaste kann das Fenster aktiviert werden, die Taskleiste verschwindet und das Fenster reagiert auch auf Eingaben - was es vorher nicht tut.


Delphi-Quellcode:
FormStyle:=fsStayOnTop;
hat keine Verbesserung gebracht.


edit sagt:
Schließe ich das Programm nach dem Systemstart und starte es manuell, dann wird es dargestellt wie gewünscht. Vollbild und ohne Taskleiste.


Mit der Bitte um Hilfe,
Sven

baumina 2. Nov 2015 15:29

AW: Vollbildanwendung im Autostart
 
Wahrscheinlich kam noch was anderes in den Autostart-Ordner rein. Das Programm das zuletzt darüber gestartet wurde, erhält den Fokus. Dummerweise lässt sich die Autostart-Reihenfolge meines Wissens mit Windows-Bordmitteln nicht beeinflussen. Da muss man entweder auf Fremdsoftware ausweichen, oder sich eine Batch-Datei schreiben.

DeddyH 2. Nov 2015 15:50

AW: Vollbildanwendung im Autostart
 
Falls ausschließlich Deine Anwendung benutzbar sein soll, wäre evtl. ein Blick auf den Kiosk-Modus sinnvoll. Der Benutzer kuba hat sich da richtig in die Thematik reingewühlt, danach würde ich ggf. einmal im Forum recherchieren.

Rollo62 3. Nov 2015 14:16

AW: Vollbildanwendung im Autostart
 
Hallo Sven,

so ein ähnliches Problem hatte ich auch.
Allerdings etwas verschärft, weil ich eine TopMost Anwendung über eine andere TopMost Anwendung (Flash-Kiosk)
bringen musste.

Das ging nur einigermassen in dem ich regelmäßig, z.B. per Timer, die App wieder nach vorne geholt habe.

Code:
    //Make me TopMost
    SetWindowPos(FhwndSelf, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
Generell würde ich das aber auch bei normalen TopMost-Apps empfehlen, weil es immer sein kann das
z.B. die AutoHide Taskbar oder irgendetwas anderes sichtbar bleibt.

Deshalb hole ich immer regelmäßig die App wieder nach vorne.

Rollo

jfheins 3. Nov 2015 17:50

AW: Vollbildanwendung im Autostart
 
Wenn du nicht möchtest, dass der Explorer überhaupt sichtbar ist, kannst du auch dein Programm als shell registrieren.

Das ist vermutlich der beste Weg solche Wettkämpfe um die "TopMost"-Position zu verhindern. Wenn dein Programm als shell registriert ist, bist du automatisch vorne und es wird kein Explorer gestertet. Auch keine (bzw. auf jeden Fall weniger) andere Autostart-Programme. Dazu einfach den Pfad zur exe als Zeichenkette in
Code:
HKEY_Current_User\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
hinterlegen.

Der schöne Günther 3. Nov 2015 17:51

AW: Vollbildanwendung im Autostart
 
Und was passiert wenn sich die eigene Anwendung aufhängt oder beendet? :stupid:

Luckie 3. Nov 2015 17:54

AW: Vollbildanwendung im Autostart
 
Wahrscheinlich das gleiche, wie wenn sich der Explorer als Shell aufhängt oder abstürzt, was ja durchaus schon mal passieren kann. Entweder startet Windows die Shell automatisch neu oder man muss sie eben per Taskmanager neu starten.

jfheins 3. Nov 2015 20:59

AW: Vollbildanwendung im Autostart
 
Aus Erfahrung: Man sieht nur noch einen schwarzen Bildschirm (habe aber auch gehört, dass Windows die Shell automatisch neustartet. Keine Ahnung wovon das abhängt).
Also werden auch keine sensitiven (?) Informationen präsentiert, wenn mal was schiefgeht. Man kann den PC dann einfach aus und wieder an machen und das System ist wieder da (oder eben den Task-Manager aufrufen und das Programm starten). Oder einen Watchdog programmieren, der die Hauptanwendung regelmäßig prüft und ggf. abschießt und neu startet.

Dejan Vu 4. Nov 2015 06:57

AW: Vollbildanwendung im Autostart
 
Wir haben in Fertigungshallen Leitrechner und BDE-PC rumzustehen. Auf diesen PC läuft 'eigentlich' immer nur ein Programm, nämlich das Leitrechnerprogramm bzw. die BDE. Die Bediener wollen aber manchmal ein anderes Programm starten (sehr selten, ist aber so gewünscht).

Lösung:
1. Die Anwendung erzwingt die Topmost-Position mit den Mitteln von Rollo62.
2. Die Anwendung kann mit Sondertasten/Menüpunkt mit Bestätigung beendet werden.
3. Die Anwendung lässt sich über ein nicht zu übersehendes Icon auf dem Desktop wieder starten.
4. Die Anwendung startet sich bei Absturz oder Hängern neu (bzw. wird neu gestartet => Sentinel-Service)
5. Die Anwendung befindet sich im Autostart.
6. Der PC ist als Auto-Login konfiguriert

Der Sentinel-Service schickt in periodischen Abständen eine Keep-Alive Message an die Anwendung. Reagiert diese nicht, wird der User zwangsausgeloggt. Nun greift sofort das Auto-Login und die Anwendung ist wieder da: Verzögerung im Ernstfall: Ca. 1 Sekunde.

Sollte ein DAU das nicht zu übersehende Icon doch übersehen, oder des Doppelklicks nicht mächtig sein, oder einfach nur blöd, dann schaltet er den Rechner aus und wieder ein. Autologin=> Programm wieder da. Und: Ja, Rechnerneustart kriegen alle hin.

Natürlich sollte man seine Anwendung so schreiben, das sie nie abstürzt oder hängt. Aber mit Delphi ist das nicht immer möglich (mit anderen Sprachen vielleicht auch nicht), wobei das natürlich eher an den Treibern und Drittanbietern liegt und nicht an Delphi selbst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz