![]() |
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:
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.
WindowState:=wsMaximized;
BorderStyle:=bsNone; 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:
hat keine Verbesserung gebracht.
FormStyle:=fsStayOnTop;
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 |
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.
|
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.
|
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:
Generell würde ich das aber auch bei normalen TopMost-Apps empfehlen, weil es immer sein kann das
//Make me TopMost
SetWindowPos(FhwndSelf, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE); z.B. die AutoHide Taskbar oder irgendetwas anderes sichtbar bleibt. Deshalb hole ich immer regelmäßig die App wieder nach vorne. Rollo |
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:
hinterlegen.
HKEY_Current_User\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
|
AW: Vollbildanwendung im Autostart
Und was passiert wenn sich die eigene Anwendung aufhängt oder beendet? :stupid:
|
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.
|
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. |
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 21:08 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