Feedback

C# - Windows Idle Time ermitteln

Veröffentlicht von am 27.09.2011
(0 Bewertungen)
Gibt die Zeitspanne zurück in der keine Benutzerangaben gemacht wurden.

Beispiel:


Console.WriteLine(IdleTimeDetector.IdleSince);
 public static class IdleTimeDetector
    {
        [DllImport("user32.dll")]
        static extern bool GetLastInputInfo(out LastInputInfo plii);

        [StructLayout(LayoutKind.Sequential)]
        struct LastInputInfo
        {
            public static readonly int SizeOf = Marshal.SizeOf(typeof(LastInputInfo));
            [MarshalAs(UnmanagedType.U4)]
            public int cbSize;
            [MarshalAs(UnmanagedType.U4)]
            public int dwTime;
        }

        public static TimeSpan IdleSince
        {
            get
            {
                int idleTime = 0;
                LastInputInfo lastInputInfo = new LastInputInfo();
                lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);
                lastInputInfo.dwTime = 0;

                if (GetLastInputInfo(out lastInputInfo))
                {
                    idleTime = Environment.TickCount - lastInputInfo.dwTime;
                }

                return TimeSpan.FromMilliseconds(idleTime);
            }
        }
    }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!