events - Compact Framework - 在不活动一段时间后锁定 UI 的超时功能

标签 events timeout compact-framework c#-2.0 handhelddevice

早上好,

我是一款中型 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 始终处于相同状态。

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

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

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

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

关于events - Compact Framework - 在不活动一段时间后锁定 UI 的超时功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/349255/

相关文章:

AFTER DELETE 事件触发器上的 MySQL 'CASE' 语法

php - 在日历中显示事件 php mysql

c# - SqlBulkCopy.WriteToServer 不能可靠地遵守 BulkCopyTimeout

php - 在 PHP 中响应 ajax 请求后如何继续处理?

.net - 如何在 .Net 中使用 PKCS #1 v1.5 编码数据

c# - 如何确定 Windows CE 设备上的可用空间?

javascript - Node - 终止事件时

javascript - Dojo "On"复选框更改内部 For 循环范围问题

timeout - Cassandra 频繁读写超时

windows-mobile - 在 Windows Mobile 编程中旋转图像