private void timerIdleDetection_Tick(object sender, EventArgs e) { int idleTime = 0; LASTINPUTINFO lastInputInfo = new LASTINPUTINFO(); lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo); lastInputInfo.dwTime = 0; int envTicks = Environment.TickCount; if (GetLastInputInfo(out lastInputInfo)) { int lastInputTick = lastInputInfo.dwTime; idleTime = envTicks - lastInputTick; } int idle_seconds = 0; if (idleTime > 0) { idle_seconds = idleTime / 1000; } else { idle_seconds = idleTime; } if (idle_seconds < 0) { idle_seconds = 0; } KopsikApi.kopsik_set_idle_seconds(KopsikApi.ctx, (ulong)idle_seconds); }