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.