Обнаружение активности пользователя
Мне нужно создать программу, которая контролирует работу компьютера. Например, перемещение мыши, щелчок мышью или ввод с клавиатуры. Мне не нужно записывать, что произошло, только что компьютер используется. Если их компьютер не использовался в течение определенного периода времени, т.е. 15 минут, мне нужно запустить событие.
Есть ли способ получить уведомления об этих событиях?
Ответы
Ответ 1
Отметьте эту статью, которая может получить время простоя компьютера, а затем вы будете запускать свое событие в произвольном состоянии.
Псевдокод:
If Computer_is_Idle > 15 minutes Then
Do this
Else
Do that or Wait more...
Примечание. Исходный код, доступный в статье.
Ответ 2
Спасибо, ЛордКовер. Этот код отсюда. Этот класс берет на себя управление клавиатурой и мышью за вас. Вы можете использовать в таймере, как это:
private void timer1_Tick(object sender, EventArgs e)
{
listBox1.Items.Add(Win32.GetIdleTime().ToString());
if (Win32.GetIdleTime() > 60000) // 1 minute
{
textBox1.Text = "SLEEPING NOW";
}
}
Основной код для контроля. Вставьте в свой код формы.
internal struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
public class Win32
{
[DllImport("User32.dll")]
public static extern bool LockWorkStation();
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
[DllImport("Kernel32.dll")]
private static extern uint GetLastError();
public static uint GetIdleTime()
{
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);
GetLastInputInfo(ref lastInPut);
return ((uint)Environment.TickCount - lastInPut.dwTime);
}
public static long GetLastInputTime()
{
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);
if (!GetLastInputInfo(ref lastInPut))
{
throw new Exception(GetLastError().ToString());
}
return lastInPut.dwTime;
}
}
Ответ 3
Вам нужно установить глобальный крючок клавиатуры и глобальный крючок мыши. Это приведет к тому, что все действия клавиатуры и мыши будут переданы вашему приложению. Вы можете вспомнить время последнего такого события и периодически проверять, если с этого времени прошло более 15 минут.
Посмотрите здесь для примера проекта. Вы также можете найти этот полезный.