0

I am trying to detect the Idle time in a Windows Mobile application and show a Screen lock after this inactive period. This link http://blog.opennetcf.com/ctacke/2009/05/19/DetectingApplicationIdle.aspx gives a hint but I found that this works only for a single form.

How can this same code be used across an application with multiple forms. I tried implementing this code after the InitializeComponent() for each form and used the Reset() function in the form Activate and GotFocus event so that the timer is reset after the user closes the screen lock by entering a PIN number. But this does not seem to work for multiple forms and the timer is not reset but it keeps firing every minute. Even if I am working on the application the event fires up every 1 minute (as per the sample code) and this is not correct.

アプリケーション全体でこの機能を使用する方法を誰でも提案できますか?

解決策を事前に感謝します。

4

2 に答える 2

1

何が問題なのかを知るにはコードを確認する必要がありますが、そのブログ エントリで提案されている方法はIMessageFilter実装を使用しています。これは、単一フォーム システムではなく、アプリケーション全体にわたる Windows メッセージ ポンプに接続されます。いくつかのソリューションで、アプリケーション全体のアイドル状態検出にまったく同じ手法を使用していますが、うまく機能します。

私の推測では、使用している IMessageFilter インスタンスにスコープの問題があると思います。フォーム レベルの変数として作成すると (そのブログのサンプルのように)、フォームを閉じるとフィルターが破棄され、機能しなくなります。複数のフォームがある場合は、モデル内の別の場所に配置して、アプリが起動している限り存続する必要があります。

于 2012-07-11T14:24:01.780 に答える
0

GetIdleTimeを利用するのはどうですか? このように、定期的に起動してチェックするタイマーと組み合わせて、システムのアイドル状態を検出し、画面ロックを表示できるようにします。

于 2012-07-12T12:55:16.557 に答える