/// <summary> /// Получить время последнего ввода пользователя /// </summary> /// <returns>Время в миллисекундах</returns> private TimeSpan GetLastInputTime() { uint idleTimeMs = 0; var lastInputInfo = new PInvokeUtil.LASTINPUTINFO(); lastInputInfo.cbSize = (uint)Marshal.SizeOf(lastInputInfo); lastInputInfo.dwTime = 0; uint envTicksMs = (uint)Environment.TickCount; if (PInvokeUtil.GetLastInputInfo(ref lastInputInfo)) { uint lastInputMs = lastInputInfo.dwTime; idleTimeMs = envTicksMs - lastInputMs; } idleTimeMs = idleTimeMs > 0 ? idleTimeMs : 0; return(TimeSpan.FromMilliseconds(idleTimeMs)); }