2011-11-11 9 views
3

誰かがVB.net windowsフォームアプリケーションで最近の活動を検出する方法を知っていますか?アプリケーションが何らかのアクティビティを行っているかどうかを判断しますか? VB.NET

私たちは、ユーザーがフロアコンピュータを共有する小売店を持っています。アプリケーションは各マシンにあり、使用前にログインする必要があります。私はそれがアイドル状態になっていると自動的にアプリケーションを閉じる方法を見つけることを試みています。

私はセッションで現在のウィンドウのログに似たようなことをすることができると思います - ユーザーが10分間何も操作しなくてもログアウトするgpを設定します。ネット私はむしろあなたがApplication.Idleイベントを使用して試みることができる

おかげ

答えて

4

アプリケーションが起動すると、Application.Idleイベントのハンドラを作成します。また、10分間のタイマーであるオブジェクトを作成します。 Appliation.Idleイベントは、イベントキューが空になるたびに発生します。マウスを動かすと、イベントが発生します。キーを押すと、イベントが発生します。 Application.IdleHandlesキーワードを使用することはできません。 Handlesは、ローカルでデカル化されたオブジェクトに対してのみ機能し、静的オブジェクトには機能しません。

Public Sub MainForm_Load(sender As Object, e As EventArgs) Handles MainForm.Load 
    AddHandler System.Windows.Forms.Application.Idle, AddressOf Application_Idle 
    ' TODO: Create the 10-minute timer. 
End Sub 

Private Sub Application_Idle(sender As Object, e As EventArgs) 
    ' TODO: Restart the 10-minute timer. 
End Sub 

' This assumes your TenMinuteTimer object has an Expire event. Do what works for you instead. 
Private Sub TenMinuteTimer_Expire(sender As Object, e As EventArgs) Handles TenMinuteTimer.Expire 
    ' TODO: Close the application safely. 
End Sub 

これで唯一の問題は、ユーザが長く、10分以上かかる行動を開始した場合、それはTenMinuteTimer.ExpireApplication.Idleが発生しますです。これが起こることが予想される場合は、長期実行コードを実行する前にTenMinuteTimerを無効にしてから、再度有効にしてください。

1

をそのメソッドを使用します。以下のようなので:

あなたがダウンしてアプリを終了するか、開いたままでください:あなたが発生する可能性があるさまざまなシナリオのすべてについて心配する必要はありませんので、

Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs) 

    MessageBox.Show("You are in the Application.Idle event.") 

End Sub 
1

は、私は個人的に、Windowsの実装をお勧めしますか?

プロンプト(メッセージボックス)が画面に表示されるとどうなりますか?

アプリケーションを終了すると、進行中の作業はどのように処理されますか?

アプリを停止しないと、ユーザーにどのように通知し、別のユーザーがログインしたい場合は、元のユーザーの情報を正常にロールバックするにはどうすればよいですか?

別のユーザーがログインしたい場合、以前のユーザーが画面に残っていた可能性のある機密情報がどのように表示されないようにするにはどうすればいいですか?

しかし、これを続行したい場合は、IMessageFilterを使用して標準のウィンドウメッセージパイプラインにフックすることをお勧めします。 Hereは、これを使用する方法に関するまともな記事です。

0

カーソルの座標を定期的に確認して、最後のチェックから変更されているかどうかを確認できます。変更のない一定量のチェックの後、アプリケーションは終了します。おそらく最良の方法ではありませんが、それは間違いなく選択肢です。

関連する問題