在Winforms中检测空闲用户

And*_*rew 14 c# winforms

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

Ale*_* K. 11

在一个计时器中你可以p/invoke GetLastInputInfo(),它将返回自从用户检测到输入以来当前会话中所有进程的数字ms.

  • 它返回最后一个输入的滴答时间,因此它会上升,从Environment.TickCount中扣除它 (4认同)

dsc*_*fer 6

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

.NET等效于GetLastInputInfo?

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

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

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