예제 #1
0
        /// <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));
        }