早上好,
我是中型PDA应用程序的开发人员,将在街头使用。 PDA将包含一些模糊的敏感数据(名称和地址等)。已经处理了移动数据库上的加密,但是如果有人在登录时拿到了PDA,他们可以愉快地查看数据直到电池耗尽或他们关闭应用程序并且必须再次登录。
当用户访问PDA应用程序时,他们需要输入用户名和PIN码。该软件的版本1将一个事件挂钩到系统中的每个按钮,以便在按下按钮时,它更新了一个名为LastActionTime的变量。在主窗体上运行一个计时器,如果LastActionTime超过10分钟,那么系统将再次抛出登录表单,直到前一个用户/管理员再次登录(就像Windows锁定屏幕一样)。
这在某种意义上运行良好......问题在于它只处理按钮并且没有处理其他控件,如ListViews,PictureBoxes等。
有没有什么好方法可以达到这个目的?例如,有没有办法可以扩展Windows窗体类来处理每个事件并相应地更新该变量?或者我可以做一些Windows-esque来处理表单上的每一个鼠标事件?
为了完全简洁,我想要实现的是,当PDA屏幕/按钮没有被触摸10分钟时,PDA会知道这一点并允许我解锁我的锁定方法。
非常感谢任何想法,帮助和指导。
编辑:我在Windows Mobile 6.0上使用Compact Framework 2.0,但该功能需要在Windows Mobile 5.0及更高版本上运行。
答案 0 :(得分:3)
一种可能的解决方案是依靠PDA进入电源空闲状态。您可以使用OpenNETCF.WindowsCE.PowerManager.PowerIdle事件为此注册通知。实际上,考虑电源管理考虑因素是个好主意。您不能指望您的PDA始终处于相同的状态。
另一种解决方案是监视输入驱动程序的非活动事件(请参阅此link)。但是,此解决方案非常适用于设备。
不幸的是,Windows CE无法注册全局鼠标事件挂钩。
以上是操作系统解决方案。扩展Windows窗体和控件类没有一种简单的方法。可能你需要扩展你将使用的所有控件。最简单的解决方案是为所有控件和表单实现GetFocus方法。你可以在那里重置你的柜台。
顺便说一下,在桌面环境中,使用GetLastInputInfo可以很容易地实现这一点。
答案 1 :(得分:0)
查看此帖:
我遇到了同样的问题,最后使用Application.AddMessageFilter来获得适当的结果。该线程最终包含一个指向我写的示例项目的链接,显示了不活动计时器的工作,包括在必要时关闭子窗口以返回主窗口屏幕。
大卫
答案 2 :(得分:0)