Hola:
Puedes colocar un componente TApplicationEvents, interceptar el evento OnIdle y ahí almacenas en una variable de tipo Longint el instante mediante GetTickCount. Colocas un TTimer con un Interval no muy pequeño, puesto que debe controlar minutos supongo (p.e. Interval = 60000), y ahí compruebas si ha trnscurrido el máximo tiempo de inactividad, algo así:
Código:
var
UltimoAcceso : Longint;
procedure TFormPrincipal.ApplicationEvents1OnIdle (Sender: TObject;
var Done: Boolean);
begin
UltimoAcceso := GetTickCount;
Done := TRUE;
end;
procedure Timer1OnTimer (Sender: TObject)
begin
if GetTickCount - UltimoAcceso > 3600000 then // 60 minutos
Database1.Connected := FALSE;
end;
Si manejas un Delphi 4.0 o menor, no exite el componente TApplicationEvents, tienes que hacerlo "a mano":
Código:
procedure TFormPrincipal.AppMessage (var Msg:TMsg; var Handled:Boolean);
begin
// interceptamos eventos de teclado y ratón
if (Msg.message in [WM_KEYFIRST .. WM_KEYLAST]) OR
(Msg.message in [WM_MOUSEFIRST .. WM_MOUSELAST]) then
UltimoAcceso := GetTickCount;
end;
procedure TFormPrincipal.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
UltimoAcceso := GetTickCount;
end;
A ver si esto te sirve
Un saludo