检测当前程序是否有人操作应该再实际中还是有用的。最简单的方法时判断鼠标位置是否改变了。winform中也是一样。直接看代码:

public class CheckUsedManager     {          public static event EventHandler TimeToFinishedEvent = null;          private static DispatcherTimer checkUsedTimer = new DispatcherTimer();          private static Point mousePosition = GetMousePoint();          static CheckUsedManager()         {             checkUsedTimer.Interval = TimeSpan.FromSeconds(秒数);              checkUsedTimer.Tick += new EventHandler(CheckUsedTimer_Tick);              checkUsedTimer.Start();         }          static void CheckUsedTimer_Tick(object sender, EventArgs e)         {             if (!HaveUsedTo())             {                 if (TimeToFinishedEvent != null)                 {                     TimeToFinishedEvent(null, null);                 }             }         }          private static bool HaveUsedTo()         {             Point point = GetMousePoint();              if (point == mousePosition)             {                 return false;             }              mousePosition = point;              return true;         }          [StructLayout(LayoutKind.Sequential)]         private struct MPoint         {             public int X;              public int Y;              public MPoint(int x, int y)             {                 this.X = x;                  this.Y = y;             }         }          [DllImport("user32.dll", CharSet = CharSet.Auto)]         private static extern bool GetCursorPos(out MPoint mpt);         /// <summary>         /// 获取当前屏幕鼠标位置         /// </summary>         /// <returns></returns>         public static Point GetMousePoint()         {             MPoint mpt = new MPoint();              GetCursorPos(out mpt);              Point p = new Point(mpt.X, mpt.Y);              return p;         }     }

 然后绑定到该类的事件即可。如下用WPF实现的完整代码:


 判断的类:

public class CheckUsedManager     {          public static event EventHandler TimeToFinishedEvent = null;          private static DispatcherTimer checkUsedTimer = new DispatcherTimer();          private static Point mousePosition = GetMousePoint();          static CheckUsedManager()         {             checkUsedTimer.Interval = TimeSpan.FromSeconds(ReadConfig.AutoCheckUsedTime);              checkUsedTimer.Tick += new EventHandler(CheckUsedTimer_Tick);              checkUsedTimer.Start();         }          static void CheckUsedTimer_Tick(object sender, EventArgs e)         {             if (!HaveUsedTo())             {                 if (TimeToFinishedEvent != null)                 {                     TimeToFinishedEvent(null, null);                 }             }         }          private static bool HaveUsedTo()         {             Point point = GetMousePoint();              if (point == mousePosition)             {                 return false;             }              mousePosition = point;              return true;         }          [StructLayout(LayoutKind.Sequential)]         private struct MPoint         {             public int X;              public int Y;              public MPoint(int x, int y)             {                 this.X = x;                  this.Y = y;             }         }          [DllImport("user32.dll", CharSet = CharSet.Auto)]         private static extern bool GetCursorPos(out MPoint mpt);         /// <summary>         /// 获取当前屏幕鼠标位置         /// </summary>         /// <returns></returns>         public static Point GetMousePoint()         {             MPoint mpt = new MPoint();              GetCursorPos(out mpt);              Point p = new Point(mpt.X, mpt.Y);              return p;         }     }


读配置里的时间:

   public class ReadConfig     {         /// <summary>         /// 检测是否使用间隔时间         /// </summary>         public static int AutoCheckUsedTime         {             get             {                 int time = 10;                  try                 {                     string timeStr =  ConfigurationManager.AppSettings["AutoCheckUsedTime"];                      if (string.IsNullOrEmpty(timeStr))                     {                         timeStr= "10";                     }                      time = int.Parse(timeStr);                 }                 catch { }                  return time;             }         }     }

配置App.config:

<?xml version="1.0" encoding="utf-8" ?> <configuration>   <appSettings>     <add key="AutoCheckUsedTime" value="10"/>   </appSettings> </configuration>

界面调用:

public partial class MainWindow : Window     {         public MainWindow()         {             InitializeComponent();              CheckUsedManager.TimeToFinishedEvent -= new EventHandler(CheckUsedManager_TimeToFinishedEvent);              CheckUsedManager.TimeToFinishedEvent += new EventHandler(CheckUsedManager_TimeToFinishedEvent);         }          void CheckUsedManager_TimeToFinishedEvent(object sender, EventArgs e)         {             MessageBox.Show("无人使用!");         }     }

结果:

工程代码下载:
http://download.csdn.net/detail/yysyangyangyangshan/5095178