AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Globales OnKeyPress/OnMouseMove + TTimer.Reset?

Ein Thema von e.asy · begonnen am 8. Nov 2010 · letzter Beitrag vom 8. Nov 2010
Antwort Antwort
e.asy

Registriert seit: 23. Jul 2010
15 Beiträge
 
Delphi 2010 Professional
 
#1

Globales OnKeyPress/OnMouseMove + TTimer.Reset?

  Alt 8. Nov 2010, 12:47
Delphi-Version: 5
Moin Forum,

gibt es ein globales OnKeyPress/OnMouseMove? Und kann ich einen TTimer Resetten?

Hintergrund ist der, dass ich in meiner App, wenn X Minuten keine Taste gedrückt wurde bzw. die Maus nicht bewegt wurde einen Event auslösen.
Nun wäre es recht sinnbefreit bei jeder Komponente die Events abzufangen und dann entsprechend den Timer zu setzen. Daher die Frage nach einer Globalen Möglichkeit, wenn es sowas geben soll.

Und kann ich einen TTimer resetten, d.h. dass er wieder bei 0 anfängt zu zählen?


Vielen Dank für Hinweise.


Sonnige Grüsse,
easy.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?

  Alt 8. Nov 2010, 13:12
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if MSG.message=WM_MouseMove then
    begin
      Timer1.enabled := false;
      Timer1.enabled := true;
    end;
  if MSG.message=WM_KeyDown then
    begin
      Timer1.enabled := false;
      Timer1.enabled := true;
    end;
end;


Wobei ich den Timer nicht zurücksetzen würde sondern
z.B.
FLastAction := GetTickCount();

setzen würde

und im Timer checken ob GetTickCount - FLastAction > was auch immer Du vorhast.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
e.asy

Registriert seit: 23. Jul 2010
15 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?

  Alt 8. Nov 2010, 13:22
Hallo,

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  ...
end;
Merci! Genau das was ich gesucht habe.

Wobei ich den Timer nicht zurücksetzen würde sondern
z.B.
FLastAction := GetTickCount();

setzen würde

und im Timer checken ob GetTickCount - FLastAction > was auch immer Du vorhast.
Da ich hier ein AutoLogout realsieren möchte, komme ich um einen Timer nicht drumherum.


Sonnige Grüsse,
easy.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#4

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?

  Alt 8. Nov 2010, 13:33
Reset (wurde ja schon gesagt):
Delphi-Quellcode:
Timer.Enable := False;
Timer.Enable := True;
Wobei man auch das Intervall kurz ändern kann, aber so ist es wohl besser.


Oder du hast einen fortlaufenden Timer (z.B. im Minutenintervall), merkst dir in ApplicationEvents1Message die Zeit des letzten Ereignisses, und prüfst im Timer wie lange das letzte Event schon her ist.
Zitat:
Da ich hier ein AutoLogout realsieren möchte, komme ich um einen Timer nicht drumherum.
Joar, aber es kommt grauf an, wie du den Timer realisierst.
> Timer bis Timeout
> kürzerer Timer, welcher auf das letzte Ereignis prüft.

Je nach Anzahl der Events/Ereignisse kann ein das Eine oder Andere Resourcenschonender sein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Nov 2010 um 13:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#5

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?

  Alt 8. Nov 2010, 14:29
Da es aus deiner Frage, jedenfalls für mich, noch nicht klar hervorgeht:

Wenn du wissen möchtest, wann die letzte Eingabe in deinem Programm getätigt wurde, hast du ja schon einige Tipps bekommen. Soll das ganze aber systemweit funktionieren, also auch außerhalb deiner Anwendung, bietet sich http://www.swissdelphicenter.ch/de/showcode.php?id=2018 an.
Jonas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 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