Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Windows Meldungen unterdrücken (https://www.delphipraxis.net/181447-windows-meldungen-unterdruecken.html)

JRichmann 15. Aug 2014 10:47

Windows Meldungen unterdrücken
 
Hallo...

wir habe eine Automatensoftware erstellt (etwas in der Art wie man es von den Fahrkarten Automaten der DB kennt).

Die Software ist mit Delphi 2010 erstellt und läuft unter Win7.

Der Benutzer soll natürlich nicht ins OS kommen. Darum wird die Taskleiste und das Startmenü unsichtbar gemacht. Die Software legt sich dann vollflächig auf den Monitor. Das Funktioniert auch soweit ganz gut.

Im Moment passiert es leider, das die Software sich fest frisst und hängt. Dann kommt das Typische Windows System Fenster hoch:

"EXE reagiert nicht"
- Online nach einer Lösung suchen
- Programm schließen
- Auf antwort Warten

Hierüber gelangt der User dann doch ins OS.

Kann man diese Meldung irgendwie unterdrücken ? Der User darf auf gar keinen Fall ins OS gelangen.

Grüße

Jörg

himitsu 15. Aug 2014 11:25

AW: Windows Meldungen unterdrücken
 
Zitat:

Zitat von JRichmann (Beitrag 1268746)
Kann man diese Meldung irgendwie unterdrücken ?

Ja, indem ihr eure Anwendung nicht "hängen" lasst. :stupid:

Zitat:

Zitat von JRichmann (Beitrag 1268746)
Der User darf auf gar keinen Fall ins OS gelangen.

Such im Forum mal nach Kiosk, Kiosk-Modus, oder sowas ... her gibt es schon jemanden, der sowas macht.

PS:
Win (die Windows-Taste)
Strg+Alt+Entf
Strg+ESC
Alt+Tab
Win+E
und tausende weitere Wege ins Windows

Medium 15. Aug 2014 11:31

AW: Windows Meldungen unterdrücken
 
Es gibt ein paar Suites die Windows in einen "Kiosk-Modus" versetzen, der genau für solche Anwendungen gedacht ist. In wie weit ein Totalabsturz des Programms dabei von den diversen Tools behandelt wird, weiss ich allerdings mangels Erfahrung mit den Dingern nicht.
Grundsätzlich wäre es aber wohl erheblich besser zu versuchen, die Ursache für diesen "Unfall" zu lokalisieren und ihn sauber über Exceptions im Programm schon abzuhandeln.

Edit: Ui, da war ich etwas lahm =)

Aviator 15. Aug 2014 11:42

AW: Windows Meldungen unterdrücken
 
Exception Handling und alles was dazu gehört sollte natürlich durchgeführt werden, um eine Anwendung möglichst stabil zu halten. Aber davon abgesehen könntet ihr doch einfach als "Shell" die geladen wird nicht die "explorer.exe" eintragen, sondern euer Programm. Dann ist zumindest schonmal verhindert, dass im Hintergrund der Desktop sichtbar ist. Das ist dann schon so eine Art "Kiosk-Modus".

Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
hier den Schlüssel "Shell" entsprechend anpassen.

Ob das natürlich die optimale Lösung ist sei mal dahingestellt.

p80286 15. Aug 2014 11:48

AW: Windows Meldungen unterdrücken
 
Zitat:

Zitat von himitsu (Beitrag 1268755)
Zitat:

Zitat von JRichmann (Beitrag 1268746)
Kann man diese Meldung irgendwie unterdrücken ?

Ja, indem ihr eure Anwendung nicht "hängen" lasst. :stupid:

:thumb::thumb::thumb::thumb::thumb::thumb:

K-H

Uwe Raabe 15. Aug 2014 12:35

AW: Windows Meldungen unterdrücken
 
Zitat:

Zitat von himitsu (Beitrag 1268755)
Zitat:

Zitat von JRichmann (Beitrag 1268746)
Kann man diese Meldung irgendwie unterdrücken ?

Ja, indem ihr eure Anwendung nicht "hängen" lasst. :stupid:

madExcept hat so eine Option: check for frozen main thread

Dejan Vu 15. Aug 2014 12:51

AW: Windows Meldungen unterdrücken
 
Das war jetzt nicht genau das, was himitsu wohl gemeint hat. Ich kann mir vorstellen, das der mühsehlige Weg über Entwanzen, Speicherlecks stopfen, Architektur aufräumen doch eher zum Ziel führt.

Und wenn doch alles perfekt ist, aber die UI auf eine Rückantwort wartet, dann => ab damit in den Thread.

Uwe Raabe 15. Aug 2014 15:28

AW: Windows Meldungen unterdrücken
 
Zitat:

Zitat von Dejan Vu (Beitrag 1268774)
Das war jetzt nicht genau das, was himitsu wohl gemeint hat. Ich kann mir vorstellen, das der mühsehlige Weg über Entwanzen, Speicherlecks stopfen, Architektur aufräumen doch eher zum Ziel führt.

Aber genau dazu dient doch diese Option!

Zitat:

Zitat von http://help.madshi.net/madExceptSettings1.htm
If you turn the check for frozen main thread option on, madExcept periodically checks at runtime whether your main thread still reacts to messages. If it does not react for the specified time (default 60 seconds), an exception is raised. This functionality should help you finding and locating infinite loops and dead locks. Since each bug report contains the callstack of all threads of the current process, you can often quite easily see, what each thread was doing and who possibly waited on whom and why.


Dejan Vu 15. Aug 2014 15:41

AW: Windows Meldungen unterdrücken
 
Wow. Sollte mich mal wieder anschauen, das Teil.

Namenloser 15. Aug 2014 15:56

AW: Windows Meldungen unterdrücken
 
Es könnte aber auch passieren, dass die Anwendung selbst fehlerfrei ist, aber irgendeine DLL o.ä. Fehler verursacht. Das beste wäre vielleicht ein Watchdog als Extra-Prozess (nicht bloß Thread wie bei madExcept, der kann ja mitabstürzen), der in regelmäßigen Abständen prüft, ob alles in Ordnung ist, und ggf. die Anwendung neustartet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:58 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