【问题标题】:Compact Framework - Timeout function for locking UI after period of inactivityCompact Framework - 在不活动一段时间后锁定 UI 的超时功能
【发布时间】:2010-09-25 20:13:28
【问题描述】:

早上好,

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

【问题讨论】:

  • 考虑提供有关您的平台的更多详细信息(Windows Mobile 5 或 6、Windows CE)
  • 能否请您查看这个问题stackoverflow.com/questions/24241400/… 并指导我如何在 c# 中超时。我正在 Windows CE 中开发我的手机应用程序。感谢您的帮助。

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


【解决方案1】:
【解决方案2】:

看看这篇文章:

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

我遇到了同样的问题,最终使用 Application.AddMessageFilter 来获得适当的结果。该线程最终包含一个指向我编写的示例项目的链接,该链接显示了不活动计时器的工作情况,包括在必要时关闭子对话框以返回主窗口屏幕。

大卫

【讨论】:

    【解决方案3】:

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

    另一种解决方案是监控输入驱动程序的非活动事件(参见link)。但是,此解决方案是非常特定于设备的。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多