Я заставляю простаивать с помощью мыши и клавиатуры.До сих пор я получаю время простоя мыши, но не могу получить время простоя клавиатуры.
, когда я проверяю «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 секунд, появится сообщение.