【发布时间】:2012-06-02 07:29:06
【问题描述】:
如何检查用户是否处于非活动状态? 我有这个:
class UserActivity : IMessageFilter
{
private double afk_time = 0.1;//minutes
private DateTime last_activity = DateTime.Now;
public static bool inactive = false;
private int WM_LBUTTONDOWN = 0x0201;
private int WM_MBUTTONDOWN = 0x0207;
private int WM_RBUTTONDOWN = 0x0204;
private int WM_MOUSEWHEEL = 0x020A;
private int WM_MOUSEMOVE = 0x0200;
private int WM_KEYDOWN = 0x0100;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN || m.Msg == WM_MBUTTONDOWN || m.Msg == WM_RBUTTONDOWN || m.Msg == WM_MOUSEWHEEL || m.Msg == WM_MOUSEMOVE || m.Msg == WM_KEYDOWN)
{
this.last_activity = DateTime.Now;
inactive = false;
}
if (DateTime.Now.AddMinutes(-afk_time) > last_activity)
inactive = true;
return false;
}
}
但我必须在 Program.cs 中运行它
Application.AddMessageFilter(new UserActivity());
我该怎么做才能自行检查用户不活动状态。我会检查一些复选框,它会开始检查。
我想检查全局用户活动 - 在所有系统中,不仅在应用程序中。
我不想不必要地使用 cpu。还是我应该使用其他解决方案?
【问题讨论】:
-
这个答案/帮助你吗? stackoverflow.com/questions/1421403/…
-
我看到了这个帖子,但我想检查您链接中的用户不活动是 Application_Idle 事件。我想知道用户不活动多长时间(鼠标和键盘事件)。而且我不知道我使用的解决方案是否正确以及它是否不会使用大量 CPU...
标签: c# .net windows user-inactivity