C#获取键盘和鼠标操作的时间的类

最近在开发项目时需要实现屏保功能,即用户在设定的时间内没有对系统进行操作时,系统将会自动进入屏保状态。

为此封装了一个获取鼠标键盘动作的类,并有一个方法可以返回用户多长时间没有操作系统的时间。

代码如下:

public class MouseKeyBoardOperate
{
    /// <summary>
    /// 创建结构体用于返回捕获时间
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    struct LASTINPUTINFO
    {
        /// <summary>
        /// 设置结构体块容量
        /// </summary>
        [MarshalAs(UnmanagedType.U4)]
        public int cbSize;

        /// <summary>
        /// 抓获的时间
        /// </summary>
        [MarshalAs(UnmanagedType.U4)]
        public uint dwTime;
    }

    [DllImport("user32.dll")]
    private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
    /// <summary>
    /// 获取键盘和鼠标没有操作的时间
    /// </summary>
    /// <returns>用户上次使用系统到现在的时间间隔,单位为秒</returns>
    public static long GetLastInputTime()
    {
        LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
        vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
        if (!GetLastInputInfo(ref vLastInputInfo))
        {
            return 0;
        }
        else
        {
            long count = Environment.TickCount - (long)vLastInputInfo.dwTime;
            long icount = count / 1000;
            return icount;
        }
    }

}

知识共享许可协议
《C#获取键盘和鼠标操作的时间的类》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告

A PHP Error was encountered

Severity: Core Warning

Message: PHP Startup: zip: Unable to initialize module Module compiled with module API=20060613 PHP compiled with module API=20090626 These options need to match

Filename: Unknown

Line Number: 0

Backtrace: