Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Globales OnKeyPress/OnMouseMove + TTimer.Reset? (https://www.delphipraxis.net/155788-globales-onkeypress-onmousemove-ttimer-reset.html)

e.asy 8. Nov 2010 12:47

Delphi-Version: 5

Globales OnKeyPress/OnMouseMove + TTimer.Reset?
 
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.

Bummi 8. Nov 2010 13:12

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?
 
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.

e.asy 8. Nov 2010 13:22

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?
 
Hallo,

Zitat:

Zitat von Bummi (Beitrag 1060368)
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  ...
end;

Merci! Genau das was ich gesucht habe. :)

Zitat:

Zitat von Bummi (Beitrag 1060368)
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.

himitsu 8. Nov 2010 13:33

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?
 
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.

Aurelius 8. Nov 2010 14:29

AW: Globales OnKeyPress/OnMouseMove + TTimer.Reset?
 
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.


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