【发布时间】:2018-03-20 20:12:59
【问题描述】:
如果用户闲置 5 分钟,我想暂停我的程序。不活动是指在那段时间没有按下鼠标或键盘(包括在程序之外!)。有什么出发点吗?
【问题讨论】:
如果用户闲置 5 分钟,我想暂停我的程序。不活动是指在那段时间没有按下鼠标或键盘(包括在程序之外!)。有什么出发点吗?
【问题讨论】:
在计时器内,您可以 p/invoke GetLastInputInfo(),它将返回自检测到用户输入以来的毫秒数,涵盖当前会话中的所有进程。
【讨论】:
这个问题和一个老问题很相似:
.NET equivalent for GetLastInputInfo?
其中引用了一篇描述 C# 中一些不同选项的好文章:
http://www.codeproject.com/KB/cs/uim.aspx
如果您不介意使用 P/Invoke 并仅限于在 Windows 系统上运行,那么使用 P/Invoke 调用 GetLastInputInfo() 可能是完成您想要的最简单的方法。
【讨论】:
您可以覆盖 WndProc 并查找 WM_IDLE 消息
【讨论】:
我不久前使用过GMA.UserActivityMonitor 库来实现这一点。
【讨论】:
看起来我找到了解决您问题的方法,请看:
How to detect a Winforms app has been idle for certain amount of time 和 user34660 回答,
对于您的应用,必须更改:
const int MinuteMicroseconds = 60000;
到
const int MinuteMicroseconds = 300000;
只是时间,但以毫秒为单位。
非常适合我的 Windows 窗体应用程序。
【讨论】: