如果用户处于非活动状态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窗体应用程序。