Главная » Язык программирования C#

Как получить время бездействия пользователя в C#

Будет довольно короткая статья о том, как можно получить время бездействия пользователя за компьютером в секундах на языке программирования C#. Для этого вы можете использовать следующий довольно простой код:

[StructLayout(LayoutKind.Sequential)]
        struct LASTINPUTINFO
        {
            public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO));

            [MarshalAs(UnmanagedType.U4)]
            public UInt32 cbSize;
            [MarshalAs(UnmanagedType.U4)]
            public UInt32 dwTime;
        }

        [DllImport("user32.dll")]
        static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

        static int last()
        {
            int t = 0;
            LASTINPUTINFO l = new LASTINPUTINFO();
            l.cbSize = (UInt32)Marshal.SizeOf(l);
            l.dwTime = 0;
            int e = Environment.TickCount;
            if (GetLastInputInfo(ref l))
            {
                int inp = (Int32)l.dwTime;
                t = e - inp;
            }
            return ((t > 0) ? (t / 1000) : 0);
        }

Для того чтобы компилятор перестал ругаться и собственно программа смогла заработать, необходимо подключить следующие библиотеки:

using System.Runtime.InteropServices;

Далее остается за малым: так как метод last возвращает количество секунд, на протяжении которых от пользователя компьютера не было никаких действий, будь то движение мышкой или нажатие клавиши клавиатуры, то нам нужно время от времени обращаться к этому методу, проверяя, не было ли пользователя уже какое-то определенное время(например, через 5 минут можно выключить экран). Для этих целей прекрасно подойдет самый обычный таймер, по тику которого будут производится обращение к вышеозвученному методу.

Думаю на этом все.

Один комментарий к записи “Как получить время бездействия пользователя в C#
  1. Спасибо в cказал :

    Полезная статья, весь инет перерыл

Добавить комментарий

Ваш комментарий появится после модерации.