Почему Environment.TickCount и клавиатуры lastinputinfo.dwTime одинаковы? - PullRequest
0 голосов
/ 31 мая 2019

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

, когда я проверяю «Environment.TickCount» и «lastInputInfo.dwTime», они всегда одинаковы, поэтому время простоя всегда равно 0в клавиатуре.

Это метод получения последнего времени ввода:

 public DateTime GetLastInputTime()
    {
        var lastInputInfo = new LASTINPUTINFO();
        lastInputInfo.dwTime = 0;
        lastInputInfo.cbSize = (uint)Marshal.SizeOf(lastInputInfo);

        GetLastInputInfo(ref lastInputInfo);

        return DateTime.Now.AddMilliseconds(-(Environment.TickCount - lastInputInfo.dwTime));
    }

Это метод получения времени простоя:

public static uint GetIdleTime()
    {
        var lastinput = new LASTINPUTINFO();
        lastinput.cbSize = (uint)Marshal.SizeOf(lastinput);

        GetLastInputInfo(ref lastinput);
        return ((uint)Environment.TickCount - lastinput.dwTime);
    }

, и это событие клавиатуры:

private void keyboard_KeyBoardKeyPressed(object sender, EventArgs e)
    {
        if (GetIdleTime() > 10000)
        {
            timer1.Enabled = false;
            MessageBox.Show("keyboard mvoe test");
            timer1.Enabled = true;
        }
        label_keyboard.Text = FormatDateTime(lastInput.GetLastInputTime());
    }

Я установил 10 секунд, чтобы проверить, если я не нажимаю клавиатуру в течение 10 секунд, появится сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...