class KAMState
{
private static System.Windows.Forms.Timer timer = null;
private static KAMState kasstatte = null;
private KAMState()
{
if (timer == null)
{
timer = new System.Windows.Forms.Timer();
}
timer.Interval = 2000;//每秒查询一次鼠标和键盘休闲时间
timer.Tick += new EventHandler(timer_Event);
timer.Start();
}
public static KAMState getKAMStateInstance()
{
if (kasstatte == null)
{
kasstatte = new KAMState();
}
return kasstatte;
}
private static void timer_Event(object sender, EventArgs e)
{
if (GetLastInputTime() >= 3)
{
Console.WriteLine("HelloWrold!!!!!!");
}
}
[StructLayout(LayoutKind.Sequential)]
struct LASTINOUTINFO
{
//设置结构体块容量
[MarshalAs(UnmanagedType.U4)]
public int cbSize;
//抓获时间
[MarshalAs(UnmanagedType.U4)]
public uint dwTime;
}
[DllImport("user32.dll")]
private static extern bool GetLastInputInfo(ref LASTINOUTINFO Plii);//获取鼠标和键盘的空闲时间
public static long GetLastInputTime()
{
LASTINOUTINFO vLastInputinfo = new LASTINOUTINFO();
vLastInputinfo.cbSize = Marshal.SizeOf(vLastInputinfo);
if (!GetLastInputInfo(ref vLastInputinfo))
{
return 0;
}
else
{
long count = Environment.TickCount - (long)vLastInputinfo.dwTime;
long icount = count / 1000;
return icount;
}
}
}