Esempio n. 1
0
        public static IdleTimeInfo GetIdleTimeInfo()
        {
            var systemUptime = Environment.TickCount;
            var idleTicks    = 0;

            var lastInputInfo = new LastInputInfo();

            lastInputInfo.CbSize = (uint)Marshal.SizeOf(lastInputInfo);
            lastInputInfo.DwTime = 0;

            if (!GetLastInputInfo(ref lastInputInfo))
            {
                return(new IdleTimeInfo
                {
                    LastInputTime = DateTime.Now.AddMilliseconds(-1 * idleTicks),
                    IdleTime = new TimeSpan(0, 0, 0, 0, idleTicks),
                    SystemUptimeMilliseconds = systemUptime,
                });
            }

            var lastInputTicks = (int)lastInputInfo.DwTime;

            idleTicks = systemUptime - lastInputTicks;

            return(new IdleTimeInfo
            {
                LastInputTime = DateTime.Now.AddMilliseconds(-1 * idleTicks),
                IdleTime = new TimeSpan(0, 0, 0, 0, idleTicks),
                SystemUptimeMilliseconds = systemUptime,
            });
        }
Esempio n. 2
0
 static extern bool GetLastInputInfo(ref LastInputInfo plii);