欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

C#-鼠标操作

发布时间:2025/6/17 C# 15 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C#-鼠标操作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
获取当前鼠标位置 int xx = Control.MousePosition.X; int yy = Control.MousePosition.Y;#region 鼠标API/// <summary>/// 鼠标移动/// </summary>/// <param name="X">目标x坐标</param>/// <param name="Y">目标y坐标</param>/// <returns></returns>[DllImport("user32.dll")]public static extern bool SetCursorPos(int X, int Y);[DllImport("user32.dll")]private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);const int MMove = 0x0001; //移动鼠标 const int LeftDown = 0x0002; //模拟鼠标左键按下 const int LeftUp = 0x0004; //模拟鼠标左键抬起 const int RightDown = 0x0008;// 模拟鼠标右键按下 const int RightUp = 0x0010;// 模拟鼠标右键抬起 const int MiddleDown = 0x0020;// 模拟鼠标中键按下 const int MiddleUp = 0x0040;// 模拟鼠标中键抬起 const int XDown = 0x0080;const int XUp = 0x0100;const int Wheel = 0x0800;const int VirtualDesk = 0x4000;const int Absolute = 0x8000;// 标示是否采用绝对坐标 #endregion/// <summary>/// 向下或向上滑动间距(下为负)/// </summary>/// <param name="x"></param>private void BDMouseWheel(int x){int TempMY = 0;int TempMY2 = 0;while(true){if (MainForm.StopAll)return;OutNum = 60000;Thread.Sleep(100);if (TempMY == x){return;}if (x < 0)TempMY2 = new Random().Next(x - TempMY, 0);elseTempMY2 = new Random().Next(1, x - TempMY);mouse_event(Wheel, 0, 0, TempMY2, 0);TempMY += TempMY2;}}/// <summary>/// 鼠标移动/// </summary>/// <param name="EndP">目标坐标</param>/// <returns>false即没有到达目的</returns>private void MouseMove(Point EndP){if (EndP.X > Screen.PrimaryScreen.WorkingArea.Size.Width - 50){EndP.X = Screen.PrimaryScreen.WorkingArea.Size.Width - 50;}if (EndP.Y > Screen.PrimaryScreen.WorkingArea.Size.Height - 50){EndP.Y = Screen.PrimaryScreen.WorkingArea.Size.Height - 50;}if (EndP.X <= 0){EndP.X = 50;}if (EndP.Y <= 0){EndP.Y = 50;}//SetCursorPosPoint NowMouseP = new Point(Control.MousePosition.X, Control.MousePosition.Y);Random Rd = new Random(GetRandomSeed());//0,100int spl = 50;int spIx = 0;int spIy = 0;bool Xb = false;bool Yb = false;int Spx = 0;int Spy = 0;while (NowMouseP != EndP){if (MainForm.StopAll)return;OutNum = 60000;Thread.Sleep(Rd.Next(20,50));NowMouseP = new Point(Control.MousePosition.X, Control.MousePosition.Y);Spx = NowMouseP.X - EndP.X;Spy = NowMouseP.Y - EndP.Y;if (Spx > 0)Xb = true;elseXb = false;if (Spy > 0) Yb = true;elseYb = false;Spx = System.Math.Abs(Spx);Spy = System.Math.Abs(Spy);if (Spx > Spy && Spy > 0 && Spx > 0)spIx = (Spx * spl) / Spy;else if (Spx <= Spy && Spy > 0 && Spx > 0)spIy = (Spy * spl) / Spx;else{}SetCursorPos(NowMouseP.X == EndP.X ? NowMouseP.X : (NowMouseP.X + (Xb ? -(Rd.Next(Spx > spIx ? spIx : Spx) + 1) : (Rd.Next(Spx > spIx ? spIx : Spx) + 1))), NowMouseP.Y == EndP.Y ? NowMouseP.Y : (NowMouseP.Y + (Yb ? -(Rd.Next(Spy > spIy ? spIy : Spy) + 1) : (Rd.Next(Spy > spIy ? spIy : Spy) + 1))));}}/// <summary>/// 随机轴/// </summary>/// <returns></returns>private int GetRandomSeed(){byte[] bytes = new byte[4];System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();rng.GetBytes(bytes);return BitConverter.ToInt32(bytes, 0);}/// <summary>/// 鼠标左键点击/// </summary>private void ClickMouse(){mouse_event(LeftDown, 0, 0, 0, 0);Thread.Sleep(200);mouse_event(LeftUp, 0, 0, 0, 0);}

总结

以上是生活随笔为你收集整理的C#-鼠标操作的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。