Пишу программу для учета рабочего времени.
Нужна проверка того, что пользователь не просто включил программу и сидит бездельничает, а действительно осуществляет работу. В голове вариант проверять мышь с клавиатурой и при отсутствии действий n минут, включать таймер, который считает кол-во потраченного в пустую времени.
Пользователь ведь может пользоваться соц сетями, играть в игры и это будет считаться как рабочее время. Следовательно в голову пришла мысль, что можно составить список из "рабочих программ" и время, проведенное в других, не учитывать как отработанное.
Сама суть вопроса - какими средствами это реализовать? Примеры может какие есть, или статьи. К сожалению, не гуру C#, но диплом писать как-то нужно :)
Все через WinAPI. Активное окно узнать можно примерно так:
[ DllImport("user32.dll") ]
static extern int GetForegroundWindow();
[ DllImport("user32.dll") ]
static extern int GetWindowText(int hWnd, StringBuilder text, int count);
private void GetActiveWindow()
{
const int nChars = 256;
int handle = 0;
StringBuilder Buff = new StringBuilder(nChars);
handle = GetForegroundWindow();
if ( GetWindowText(handle, Buff, nChars) > 0 )
{
WindowLabel.Text = Buff.ToString();
IDWindowLabel.Text = handle.ToString();
}
}
Клавиатуру можно как-то так:
https://blogs.msdn.microsoft.com/dmandreev/2010/11/29/windows-c/
Дальше уж сами.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей