2008. április 4., péntek

How to check when the user last clicked on the program's interface


Is there a way to find out when the user last clicked on a program's interface? It is some sort of like idle time but the idle time for this specific program.


From inside the application it is fairly easy. You need three pieces of equipment here:

A "Time of last activity" variable, field of your main form

FLastActive: TDateTime;

A timer that regularly checks the FLastActive variable against the current time. Set it to an interval of, say 60000, and set its Active property to true at design-time. The OnTimer event handler would be something like this (timeout after 15 minutes):

if (FLastActive + EncodeTime(0, 15, 0, 0)) < Now then

A handler for the Application.OnMessage event that updates the FLastActive variable on each key or mouse message. The handler would do something like this:

case msg.Message of
    FLastActive := Now;

Nincsenek megjegyzések:

Megjegyzés küldése