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);
        }
 /// <summary>
 /// Get the Last input time in ticks
 /// </summary>
 /// <returns></returns>
 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;
 }
 private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);