在Winforms中检测空闲用户

时间:2011-06-08 16:46:38

标签: c# winforms

如果用户处于非活动状态5分钟,我想暂停我的程序。通过不活动我的意思是在那段时间没有按下他们的鼠标或键盘(包括程序之外!)。任何起点?

5 个答案:

答案 0 :(得分:11)

在一个计时器中,您可以调用GetLastInputInfo(),这将返回自用户检测到输入后的数字ms,当前会话中的所有进程。

答案 1 :(得分:6)

这个问题与一个老问题非常相似:

.NET equivalent for GetLastInputInfo?

其中引用了一篇描述C#中不同选项的好文章:

http://www.codeproject.com/KB/cs/uim.aspx

如果您不介意使用P / Invoke并限制在Windows系统上运行,那么使用P / Invoke调用GetLastInputInfo()可能是完成您想要的最简单的方法。

答案 2 :(得分:2)

您可以覆盖WndProc并查找WM_IDLE消息

答案 3 :(得分:2)

前段时间我使用GMA.UserActivityMonitor库来实现这一目标。

答案 4 :(得分:0)

看起来我找到了您的问题的解决方案,请看:

<强> How to detect a Winforms app has been idle for certain amount of time user34660 回答,

对于您的应用,必须更改:

const int MinuteMicroseconds = 60000;

const int MinuteMicroseconds = 300000;

这只是时间,但是在ms。

适用于我的Windows窗体应用程序。