TimeSpan getIdleTime() { var idleTime = new LASTINPUTINFO { cbSize = LASTINPUTINFO.SizeOf }; GetLastInputInfo(ref idleTime); var currentTicks = GetTickCount(); long deltaTicks; if (idleTime.dwTime > currentTicks) { deltaTicks = (((long)currentTicks + UInt32.MaxValue) - idleTime.dwTime); } else { deltaTicks = currentTicks - idleTime.dwTime; } return new TimeSpan(deltaTicks); }
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);