Zarko Gajic utiliza esta función del API de Windows:
Código Delphi
[-]function SecondsIdle: DWord;
var
liInfo: TLastInputInfo;
begin
liInfo.cbSize := SizeOf(TLastInputInfo) ;
GetLastInputInfo(liInfo) ;
Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;
procedure TForm1.Timer1Timer(Sender: TObject) ;
begin
Caption := Format('System IDLE last %d seconds', [SecondsIdle]) ;
end;
La desventaja es que solo vale para Windows 2000 en adelante.
La ventaja, es que es totalmente limpia y fiable.
Respecto a las ventanas en una aplicación modal puedes jugar con screen.activeform.formstyle.
Saludos,
FrancisR