Thema: Delphi User idle time?

Einzelnen Beitrag anzeigen

Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: User idle time?

  Alt 17. Mai 2006, 14:56
ich hab das so gelöst:
- im globalen Message-handler meines Programms merke ich mir die LastMsgTime mit GetTickCount.
- in einem Timer (Intervall 500 ms) prüfe ich, ob der aktuelle GetTickCount - LastMsgTime grösser als die gewünschte Idle-Time ist und mache dann meine Aktionen für Idle.


Delphi-Quellcode:
procedure FormXY.HandleOnMessage (var Msg: TMsg; var Handled: Boolean);
begin
  ...
  lastMsgTime := Msg.time; // Zeit der letzten Message merken
  ...
end;

// wird alle 500ms aufgerufen, um zu prüfen, ob das Fenster minimiert werden muss
procedure FormXY.TiIdleTimerOnTimer (Sender: TObject);
var
  x : DWORD;
  diff : DWORD;
begin
  x := GetTickCount; // aktuelle Zeit holen
  diff := x - lastMsgTime; // Zeit der letzten Message berechnen
  ...
  if diff > FoKonfiguration.Allgemein_FensterAutomatischSchliessenZeit * 1000 then
  begin
    FormXY.Hide; // Fenster verstecken
  end;
  ...
end;
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat