Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um? (https://www.delphipraxis.net/175966-zurueck-zur-standard-ansicht-nach-x-sekunden-idle-wie-setze-ich-das-um.html)

Der schöne Günther 2. Aug 2013 21:49

"Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
An sich eine wohl ziemlich triviale Angelegenheit: Der Benutzer kann über Popup-Dialoge Werte eingeben, Seitenfenster aufklappen, von der Hauptseite auf andere "Seiten" wechseln, ...

Ich möchte, dass nach bsp. 10 Sekunden Idle eine definierte Standardansicht wiederhergestellt wird. Ich definiere "10 Sekunden Idle" als "10 Sekunden lang keine Eingabe vorgenommen: Nicht irgendwo auf den Bildschirm getippt". Ich möchte nicht für jede VCL-Komponente in jedem möglichen Event einen laufenden Timeout-Wert zurücksetzen. Dann vergesse ich das mal bei einer Komponente und schon läuft der Timeout weiter obwohl der Benutzer gerade auf dieser Komponente herumpatscht.

Wie erschlage ich das am besten? Ein (systemweiter) Maushook? Kann ich mit der Auswertung der Nachrichten die an mein Fenster gehen etwas anfangen? Die Anwendung läuft voraussichtlich ausschließlich als Kiosk-Anwendung, Windows-Dialoge oder andere Anwendungen werden nie sichtbar sein.

Falls noch Ideen und Erfahrungen gibt, dass man sich das "Merken" und das reibungslose Zurückkehren in einen fest definierten "optischen Ursprungszustand" einfach machen kann und worauf man achten muss - Dann nehme ich das natürlich auch gerne dankend an 8-)

Sir Rufo 2. Aug 2013 22:21

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Mit einem Maus- und Tastatur-Hook

jaenicke 2. Aug 2013 22:22

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Es gibt da so eine schöne API-Funktion GetLastInputInfo: ;-)
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Sir Rufo 2. Aug 2013 22:25

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Zitat:

Zitat von jaenicke (Beitrag 1223343)
Es gibt da so eine schöne API-Funktion GetLastInputInfo: ;-)
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Die scheint aber global zu sein ... könnte aber für das beschriebene Szenario unerheblich sein :)

Der schöne Günther 2. Aug 2013 22:32

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Danke schon einmal für die Antworten.

Was mir erst jetzt noch einfällt ist folgende (unter Umständen) greifende Einschränkungen: Die Anwendung wird zwar 99% der Zeit über einen Touchscreen bedient, eventuell liegen aber in einer Kiste Maus und Tastatur. Jetzt würde es mich nicht wundern, wenn bsp. Erschütterungen die Maus immer einen Millimeter zittern lassen und das so Timeout-Funktionen aushebelt.

Ein Maushook hätte hier im Gegensatz zu
Delphi-Quellcode:
GetLastInputInfo
wohl den Unterschied, dass ich hier reine Mausbewegungen ohne gedrückte Taste (Finger auf dem Glas) schon einmal aussortieren könnte...

Nersgatt 3. Aug 2013 06:46

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Ich hab sowas auch an einem Touchscreengerät schon mal mit einem Maushook umgesetzt. Das hat gut funktioniert.
Probleme mit Erschütterungen hatte ich nie. Und meine Touchscreens hingen in Hallen wo auch mal ein Trecker oder ein Gabelstapler vorbeifährt.

Der schöne Günther 3. Aug 2013 06:51

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Das war auch kein etablierte Tatsache sondern nur so eine fixe Idee. Gut zu wissen dass man damit wohl nicht rechnen muss :)

ConnorMcLeod 5. Aug 2013 06:12

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Wie wäre es mit TApplicationEvents + Timer?
1) OnIdle: Timer erfinden+starten
2) OnMessage wenn WM_MOUSEFIRST .. WM_MOUSELAST, WM_KEYFIRST .. WM_KEYLAST, dann Timer wieder zerstören, falls Assigned
3) OnTimer: Reset

Perlsau 5. Aug 2013 07:25

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Zitat:

Zitat von Nersgatt (Beitrag 1223356)
Probleme mit Erschütterungen hatte ich nie.

Ich erlebe häufig das Phänomen, daß sich der Mauszeiger meiner optischen Maus selbständig bewegt. Nach kurzem Hochheben und Niedersetzen der Maus steht der Zeiger dann wieder still ... Ein Austausch der Maus brachte nichts und zeigte das Phänomen weiterhin ...

Nersgatt 5. Aug 2013 07:27

AW: "Zurück zur Standard-Ansicht nach X Sekunden Idle" - Wie setze ich das um?
 
Sowas hab auch ab und zu. Aber nur wenn ich bei Kunden an spiegelnden Tischen/Glastischen oder weißen Tischen arbeiten muss. Einfach den Collegeblock drunterlegen und das Thema ist erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.
Seite 1 von 2  1 2      

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