1 private void Form1_Load(object sender, EventArgs e)
2 {
3 System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
4 t.Interval = 100;
5 t.Tick += new EventHandler(t_Tick);
6 t.Start();
7 }
8
9 void t_Tick(object sender, EventArgs e)
10 {
11 long time = GetLastInputTime();
12 if (time > 1000)
13 {
14 ((System.Windows.Forms.Timer)sender).Stop();
15 MessageBox.Show(time.ToString());
16 }
17 }
18
19 [StructLayout(LayoutKind.Sequential)]
20 struct LASTINPUTINFO
21 {
22 [MarshalAs(UnmanagedType.U4)]
23 public int cbSize;
24 [MarshalAs(UnmanagedType.U4)]
25 public uint dwTime;
26 }
27
28 [DllImport("user32.dll")]
29 static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
30
31 static long GetLastInputTime()
32 {
33 LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
34 vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
35 if (!GetLastInputInfo(ref vLastInputInfo)) return 0;
36 return Environment.TickCount - (long)vLastInputInfo.dwTime;
37 }
2 {
3 System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
4 t.Interval = 100;
5 t.Tick += new EventHandler(t_Tick);
6 t.Start();
7 }
8
9 void t_Tick(object sender, EventArgs e)
10 {
11 long time = GetLastInputTime();
12 if (time > 1000)
13 {
14 ((System.Windows.Forms.Timer)sender).Stop();
15 MessageBox.Show(time.ToString());
16 }
17 }
18
19 [StructLayout(LayoutKind.Sequential)]
20 struct LASTINPUTINFO
21 {
22 [MarshalAs(UnmanagedType.U4)]
23 public int cbSize;
24 [MarshalAs(UnmanagedType.U4)]
25 public uint dwTime;
26 }
27
28 [DllImport("user32.dll")]
29 static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
30
31 static long GetLastInputTime()
32 {
33 LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
34 vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
35 if (!GetLastInputInfo(ref vLastInputInfo)) return 0;
36 return Environment.TickCount - (long)vLastInputInfo.dwTime;
37 }