有没有一种方法可以查看用户当前是否闲置?

时间:2020-03-05 18:41:21  来源:igfitidea点击:

互联网上有一些文档显示,如果用户当前空闲,并且通过检查键盘和鼠标事件检测到Windows,Windows会更改NotifyIcon.BalloonTipShown命令的行为。我目前正在使用一个应用程序,该应用程序的大部分时间都花在系统任务栏中,但有时会弹出多个提示框,并且如果它们当前不在屏幕上,我想防止用户错过其中的任何提示系统。由于如果显示一个新的气球提示,那么当前显示的所有气球提示都会被破坏,因此如果用户不在,我想暂不显示它们。

这样,如果将应用程序最小化到系统托盘,是否有任何方法可以检查用户当前是否空闲?

解决方案

回答

托管代码

每秒检查鼠标的位置。如果有要发送给用户的新消息,请保留这些消息,直到我们检测到鼠标有任何移动。

非托管代码

请参阅使用鼠标和键盘挂钩检测空闲时间

回答

Win32 LASTINPUTINFO函数如何?

using System.Runtime.InteropServices;

[DllImport("User32.dll")] 
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

struct LASTINPUTINFO 
{
    public uint cbSize;
    public uint dwTime;
}

回答

感谢答复,我最终使用了GetLastInputInfo函数,因为它可以很直接地在我正在处理的应用程序中实现。