利用windows API函數 GetLastInputInfo()來判斷系統空閒windows
//添加引用 using System.Runtime.InteropServices;函數
1 // 建立結構體用於返回捕獲時間 2 [StructLayout(LayoutKind.Sequential)] 3 struct LASTINPUTINFO 4 { 5 // 設置結構體塊容量 6 [MarshalAs(UnmanagedType.U4)] 7 public int cbSize; 8 // 捕獲的時間 9 [MarshalAs(UnmanagedType.U4)] 10 public uint dwTime; 11 } 12 [DllImport("user32.dll")] 13 private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); 14 // 獲取鍵盤和鼠標沒有操做的時間 15 private static long GetLastInputTime() 16 { 17 LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO(); 18 vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo); 19 // 捕獲時間 20 if (!GetLastInputInfo(ref vLastInputInfo)) 21 return 0; 22 else 23 return Environment.TickCount - (long)vLastInputInfo.dwTime; 24 }