2

おはようございます、

私は路上で使用される中規模の PDA アプリケーションの開発者です。PDA には、あいまいな機密データ (名前や住所など) が含まれます。モバイル データベースの暗号化は既に処理されていますが、誰かがログイン中に PDA を手に入れた場合、バッテリーが切れるか、アプリケーションを閉じて再度ログインする必要があるまで、喜んでデータを調べることができます。

ユーザーが PDA アプリケーションにアクセスするときは、ユーザー名と PIN 番号を入力する必要があります。このソフトウェアのバージョン 1 では、システム内のすべてのボタンにフックされたイベントがあり、ボタンが押されたときに LastActionTime という変数が更新されました。メイン フォームでタイマーが実行され、その LastActionTime が 10 分以上前である場合、システムは、前のユーザー/管理者が再度ログインするまで、ログイン フォームを再度スローします (Windows のロックアウト画面と同様)。

これは問題なく機能しました...ある意味では...問題は、ボタンのみを処理し、ListViews、PictureBoxesなどの他のコントロールを処理していないことです.

これを達成する良い方法はありますか?たとえば、Windows フォーム クラスを拡張してすべてのイベントを処理し、それに応じてその変数を更新する方法はありますか? または、フォーム上のすべてのマウスイベントを処理する Windows 風の何かを行うことはできますか?

完全に簡潔にするために、私が達成したいのは、PDA の画面/ボタンが 10 分間触れられていない場合、PDA がこれを認識し、ロックアウト メソッドを起動できるようにすることです。

ご意見、ご支援、ご指導をいただければ幸いです。

編集: Windows Mobile 6.0 で Compact Framework 2.0 を使用していますが、機能は Windows Mobile 5.0 以降で動作する必要があります。

4

3 に答える 3

3

考えられる解決策の 1 つは、PDA が電源アイドル状態になることに依存することです。OpenNETCF.WindowsCE.PowerManager.PowerIdle Event を使用して、この通知を登録できます。実際、電源管理の考慮事項を考慮することをお勧めします。PDA が常に同じ状態にあるとは限りません。

別の解決策は、入力ドライバーの非アクティブ イベントを監視することです (このリンクを参照してください)。ただし、このソリューションはデバイス固有です。

残念ながら、Windows CE にはグローバル マウス イベント フックを登録する方法がありません。

以上がOSソリューションでした。Windows フォームおよびコントロール クラスを拡張することでこれを行う簡単な方法はありません。おそらく、使用するすべてのコントロールを拡張する必要があります。最も簡単な解決策は、すべてのコントロールとフォームに GetFocus メソッドを実装することです。そこでカウンターをリセットできます。

ところで、デスクトップ環境では、これは GetLastInputInfo で簡単に実現できます。

于 2008-12-08T12:27:39.273 に答える
0

この投稿をチェックしてください:

http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/906b016d-f1ee-4b3e-b3df-1e3a6fea282a/

私は同じ問題に取り組み、適切な結果を得るためにApplication.AddMessageFilterを使用することになりました。そのスレッドには、最終的に、メインウィンドウ画面に戻るために必要に応じてサブダイアログをシャットダウンするなど、非アクティブタイマーが機能していることを示すサンプルプロジェクトへのリンクが含まれています。

デビッド

于 2009-02-22T13:29:44.227 に答える
0

ここに投稿されたソリューションは、WM6.5で機能します

http://www.dzhang.com/blog/2010/01/09/detecting-user-activity-or-inactivity-in-windows-mobile

于 2010-11-26T11:09:11.363 に答える