Спасибо! В итоге вот такое решение вышло:
```
int getIdleTime()
{
LASTINPUTINFO li;
li.cbSize = sizeof(LASTINPUTINFO);
GetLastInputInfo(&li);
DWORD te = GetTickCount();
int elapsed = (te - li.dwTime)/1000;
return elapsed;
}
```
Пользовательская неактивность выражается в том, что он не двигает мышкой и не стучит по клавишам?
Тогда можно просто хук поставить на эти события через SetWindowsHookEx и по таймеру отслеживать неактивность.