Ciao
Puoi usare l'evento Application.Idle per sapere quando l'applicazione non svolge alcun compito (nemmeno l'interazione con mouse e tastiera); da lì azzeri un timer che scade dopo il tempo prestabilito:
public class TuaForm : Form
{
System.Timers.Timer timer = new System.Timers.Timer();
public TuaForm()
{
InitializeComponent();
Application.Idle += new EventHandler(Application_Idle);
//Dopo un minuto di inattività
timer.Interval = 1000 * 60;
timer.AutoReset = false;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MessageBox.Show("Applicazione inattiva da 1 minuto");
}
void Application_Idle(object sender, EventArgs e)
{
//Ferma e riavvia il timer
timer.Stop();
timer.Start();
}
}
Se non esegui lavori intensivi dovrebbe funzionare bene, dimmi se ci sono problemi...
Luca