2012-07-11 67 views
0

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

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

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

预先感谢任何解决方案。

回答

1

我们需要查看您的代码以了解错误,但该博客条目中提出的方法使用IMessageFilter实现。这涉及到Windows消息泵,这是应用程序范围内的,而不是单一表单系统。我在两种解决方案中使用完全相同的技术来进行应用程序范围内的空闲检测,并且运行良好。

我的猜测是,你的IMessageFilter实例的使用范围有问题。如果您将其创建为Form级别的变量(如该博客中的样本),那么在关闭过滤器所处理的表单并且不再有效时。如果您有多个表单,则需要将其放在模型中的其他位置,以便只要应用程序启动就可以存活。

+0

Hello Chris我将InactivityFilter类添加为公共类,并将此m_filter用作每个表单的Form级别变量。我知道这必须在某个地方宣布,以便在应用程序启动后立即解雇,并尝试将其放入Program.cs中,但这是不允许的。出现此错误“'m_filter_InactivityElapsed':无法在静态类中声明实例成员”。请协助完成此功能“您需要将其放置在模型中的其他位置,以便在应用程序启动时能够存活”,以便在整个应用程序中检测到空闲时间。 – 2012-07-12 05:34:41

0

如何使用GetIdleTime?看起来像这样,与一个计时器搭配起来,这个计时器可以检测到它,可以检测到系统空闲并允许你显示屏幕锁定。

相关问题