使用mouse_event API函数实现鼠标移动

Dear200892 2019-08-18 01:11:28
程序开始运行时,我会给【起点】和【终点】赋值坐标
现在的问题是:如何模拟鼠标按下左键,然后根据轨迹来拖动鼠标,直到轨迹画完后才松开鼠标左键

举例:如同【阴阳师】中画符操作,画符过程中不能中断路径,需一气呵成完成画图

...全文
82 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dear200892 2019-08-18
MouseHelper.SetCursorPos(page.PointLeftUpX, page.PointLeftUpY); //移动常量 int Constant = Convert.ToInt32((page.PointRightUpX - page.PointLeftUpX) / 12); GameManagement.SetRtbMessage(rtb, String.Format(DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + ":第{0}次执行,鼠标移动到({1},{2}),准备绘制图形!", (number + 1), page.PointLeftUpX, page.PointLeftUpY)); MouseHelper.mouse_event(MouseEventFlagEnum.LeftDown, page.PointLeftUpX, page.PointLeftUpY, 0, UIntPtr.Zero); Thread.Sleep(1000);//执行速度过快,延迟鼠标移动时间 int PointX = page.PointLeftUpX; int PointY = page.PointLeftUpY; for (int i = 0; i < 12; i++) { if (i % 2 == 0)//向下绘制 { PointX = page.PointLeftDownX + (Constant * (i + 1)); PointY = page.PointLeftDownY; } else //向上绘制 { PointX = page.PointLeftUpX + (Constant * (i + 1)); PointY = page.PointLeftUpY; } MouseHelper.SetCursorPos(PointX, PointY); //MouseHelper.mouse_event(MouseEventFlagEnum.Move, PointX, PointY, 0, UIntPtr.Zero); //MessageBox.Show(String.Format("X:{0},Y:{1}", PointX.ToString(), PointY.ToString())); Thread.Sleep(1000);//执行速度过快,延迟鼠标移动时间 } MouseHelper.mouse_event(MouseEventFlagEnum.LeftUp, PointX, PointY, 0, UIntPtr.Zero); GameManagement.SetRtbMessage(rtb, String.Format(DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + ":第{0}次执行,鼠标移动到({1},{2}),绘制图形结束!", (number + 1), PointX, PointY));
回复
Dear200892 2019-08-18
回复
Dear200892 2019-08-18
可以加分!!!!
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.