早上好,

我是一款中型 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 及更高版本上运行。

有帮助吗?

解决方案

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

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

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

以上是操作系统的解决方案。扩展 Windows 窗体和控件类并没有简单的方法。也许您需要扩展您将使用的所有控件。最简单的解决方案是为所有控件和表单实现 GetFocus 方法。你可以在那里重置你的计数器。

顺便说一句,在桌面环境中,这可以通过 GetLastInputInfo 轻松实现。

其他提示

检查此篇出:

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

我斟酌着同样的问题,并最终使用Application.AddMessageFilter能得到相应的结果。该线程最终包含一个链接到一个样本项目中,我写了显示无效定时器的工作,包括关停如果有必要子对话框返回到主窗口画面。

大卫

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top