
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Configuration; using System.Threading; using System.Windows.Forms; namespace MouseAoto { public partial class Form1 : Form { #region 鼠標控制 /// <summary> /// 制庫 /// </summary> /// <param name="dwFlags">標志位集,指定點擊按鈕和鼠標動作的多種情況</param> /// <param name="dx">指定鼠標沿x軸的絕對位置或者從上次鼠標事件產生以來移動的數量</param> /// <param name="dy">指定鼠標沿y軸的絕對位置或者從上次鼠標事件產生以來移動的數量</param> /// <param name="dwData">鼠標滾輪移動的數量</param> /// <param name="dwExtraInfo">指定與鼠標事件相關的附加32位值</param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("user32")] private static extern int mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); [System.Runtime.InteropServices.DllImport("user32")] static extern bool SetCursorPos(int X, int Y); //移動鼠標 const int MOUSEEVENTF_MOVE = 0x0001; //模擬鼠標左鍵按下 const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模擬鼠標左鍵抬起 const int MOUSEEVENTF_LEFTUP = 0x0004; //模擬鼠標右鍵按下 const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模擬鼠標右鍵抬起 const int MOUSEEVENTF_RIGHTUP = 0x0010; //模擬鼠標中鍵按下 const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模擬鼠標中鍵抬起 const int MOUSEEVENTF_MIDDLEUP = 0x0040; //標示是否采用絕對坐標 const int MOUSEEVENTF_ABSOLUTE = 0x8000; //模擬鼠標滾輪滾動操作,必須配合dwData參數 const int MOUSEEVENTF_WHEEL = 0x0800; #endregion public Form1() { InitializeComponent(); this.KeyPreview = true; } public void TestMoveMouse(int X, int Y) { SetCursorPos(X, Y); mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } /// <summary> /// 鍵盤監控 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyData == Keys.Escape) { Application.Exit(); } } private void button1_Click(object sender, EventArgs e) { int X = Convert.ToInt32(textBox1.Text); int Y = Convert.ToInt32(textBox2.Text); SetCursorPos(X, Y); } private void button2_Click(object sender, EventArgs e) { List<MouseModel> model = JsonConvert.DeserializeObject<List<MouseModel>>(textBox3.Text); for (int i = 0; i < Convert.ToInt32(textBox4.Text); i++) { foreach (var item in model) { TestMoveMouse(item.X, item.Y); Thread.Sleep(item.date); } } } } public class MouseModel { public int X { get; set; } public int Y { get; set; } public int date { get; set; } } }