在Winforms中检测空闲用户

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

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

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

.NET等效于GetLastInputInfo?

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

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

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

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

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

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

如何检测Winforms应用程序已空闲一段时间并且用户34660回答,

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

 const int MinuteMicroseconds = 60000; 

 const int MinuteMicroseconds = 300000; 

这只是时间,但是在ms。

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