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

一种可能的解决方案是依靠 PDA 进入电源空闲状态。您可以使用 OpenNETCF.WindowsCE.PowerManager.PowerIdle 事件为此注册通知。事实上,考虑电源管理因素是个好主意。您不能期望您的 PDA 一直处于相同的状态。

另一种解决方案是监视输入驱动程序的非活动事件(请参阅此链接)。然而,这个解决方案是非常特定于设备的。

不幸的是,在 Windows CE 中没有办法注册全局鼠标事件挂钩。

以上是操作系统解决方案。扩展 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 回答