ユーザーが最後にマウスを動かしたかキーを押した時間を記録してから、その時間がしきい値よりも大きいかどうかを確認する必要があります。
したがって、アプリケーションにマウス移動、マウスクリック、およびキーボードハンドラーを追加する必要があります(これはSilverlightコードであるため、名前空間などを変更する必要がある場合があります)。
private void AttachEvents()
{
Application.Current.RootVisual.MouseMove += new MouseEventHandler(RootVisual_MouseMove);
Application.Current.RootVisual.KeyDown += new KeyEventHandler(RootVisual_KeyDown);
Application.Current.RootVisual.AddHandler(UIElement.MouseLeftButtonDownEvent, (MouseButtonEventHandler)RootVisual_MouseButtonDown, true);
Application.Current.RootVisual.AddHandler(UIElement.MouseRightButtonDownEvent, (MouseButtonEventHandler)RootVisual_MouseButtonDown, true);
}
次に、ハンドラーにマウス移動用の次のようなコードがあります。
private void RootVisual_MouseMove(object sender, MouseEventArgs e)
{
timeOfLastActivity = DateTime.Now;
}
KeyDown
イベントハンドラー用の同様のもの。
タイマーを設定する必要があります。
idleTimer = new DispatcherTimer();
idleTimer.Interval = TimeSpan.FromSeconds(1);
idleTimer.Tick += new EventHandler(idleTimer_Tick);
// Initialise last activity time
timeOfLastActivity = DateTime.Now;
次に、tickイベントハンドラーに次のようなものがあります。
private void idleTimer_Tick(object sender, EventArgs e)
{
if (DateTime.Now > timeOfLastActivity.AddSeconds(30))
{
// Do your stuff
}
}