0

我正在尝试检测 Windows Mobile 应用程序中的空闲时间,并在此非活动期后显示屏幕锁定。此链接http://blog.opennetcf.com/ctacke/2009/05/19/DetectingApplicationIdle.aspx给出了提示,但我发现这仅适用于单个表单。

如何在具有多个表单的应用程序中使用相同的代码。我尝试在每个表单的 InitializeComponent() 之后实现此代码,并在 Activate 和 GotFocus 事件表单中使用 Reset() 函数,以便在用户通过输入 PIN 码关闭屏幕锁定后重置计时器。但这似乎不适用于多种形式,并且计时器没有重置,但它每分钟都会触发。即使我正在处理应用程序,事件也会每 1 分钟触发一次(根据示例代码),这是不正确的。

任何人都可以建议如何在整个应用程序中使用此功能。

提前感谢任何解决方案。

4

2 回答 2

1

我们需要查看您的代码以了解问题所在,但该博客条目中提出的方法使用了IMessageFilter实现。这与 Windows 消息泵挂钩,它是应用程序范围的,而不是单一表单系统。我在几个解决方案中使用完全相同的技术进行应用程序范围的空闲检测,并且效果很好。

我的猜测是您正在使用的 IMessageFilter 实例存在范围问题。如果您将其创建为表单级变量(就像该博客中的示例一样),则当关闭过滤器被处理的表单时,它将不再起作用。如果您有多个表单,则需要将其放在模型中的其他位置,以便只要应用程序启动它就可以生存。

于 2012-07-11T14:24:01.780 回答
0

使用GetIdleTime怎么样?看起来像这样,与定期唤醒以检查它的计时器配对,可以检测系统空闲并允许您显示屏幕锁定。

于 2012-07-12T12:55:16.557 回答