/// <summary> /// Gets time in since last user input /// </summary> /// <returns></returns> public static TimeSpan Duration() { uint idleTime = 0; var lastInputInfo = new LASTINPUTINFO(); lastInputInfo.cbSize = (uint) Marshal.SizeOf(lastInputInfo); lastInputInfo.dwTime = 0; uint envTicks = (uint)Environment.TickCount; if (GetLastInputInfo(ref lastInputInfo)) { uint lastInputTick = lastInputInfo.dwTime; idleTime = envTicks - lastInputTick; } return TimeSpan.FromMilliseconds(idleTime); }
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);