正在检测Winforms中的空闲用户

本文关键字:用户 检测 Winforms | 更新日期: 2023-09-27 17:58:53

如果用户处于非活动状态5分钟,我想暂停我的程序。我所说的不活动是指在那段时间里没有按下他们的鼠标或键盘(包括在程序之外!)。有什么出发点吗?

正在检测Winforms中的空闲用户

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

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

.NET等效于GetLastInputInfo?

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

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

如果您不介意使用p/Invoke并且仅限于在windows系统上运行,那么使用p/Invoke来调用GetLastInputInfo()可能是实现所需功能的最简单方法。

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

我以前使用过GMA.UserActivityMonitor库来实现这一点。

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

如何检测Winforms应用程序已空闲一定时间user34660答案,

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

const int MinuteMicroseconds = 60000;

const int MinuteMicroseconds = 300000;

这只是时间,但在毫秒

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