程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 判斷當前是否有人操作

判斷當前是否有人操作

編輯:C#入門知識

檢測當前程序是否有人操作應該再實際中還是有用的。最簡單的方法時判斷鼠標位置是否改變了。winform中也是一樣。直接看代碼:   [csharp]   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;           }       }     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實現的完整代碼:      判斷的類:   [csharp]   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 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;         }     } 讀配置裡的時間:   [csharp]   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;            }        }    }        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:   [csharp]  <?xml version="1.0" encoding="utf-8" ?>   <configuration>     <appSettings>       <add key="AutoCheckUsedTime" value="10"/>     </appSettings>   </configuration>     <?xml version="1.0" encoding="utf-8" ?> <configuration>   <appSettings>     <add key="AutoCheckUsedTime" value="10"/>   </appSettings> </configuration>界面調用:   [csharp]   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("無人使用!");           }       }     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("無人使用!");         }     }結果:   \

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved