当前位置: 首页 > news >正文

有源码搭建网站难不难/百度上广告怎么搞上去的

有源码搭建网站难不难,百度上广告怎么搞上去的,哪些网站可以下载视频,做独立网站电商需要办营业执照吗在软件自动化测试或者重复性办公任务中,鼠标操作的自动化可以大大减少人工干预,提高工作效率。这里将详细介绍如何使用 C# 实现鼠标轨迹的录制与回放功能,代码结构清晰,具有较强的扩展性。 引用 NuGet 包 在开发这个功能时&…

        在软件自动化测试或者重复性办公任务中,鼠标操作的自动化可以大大减少人工干预,提高工作效率。这里将详细介绍如何使用 C# 实现鼠标轨迹的录制与回放功能,代码结构清晰,具有较强的扩展性。

引用 NuGet 包

在开发这个功能时,我们需要用到第三方库来实现全局鼠标钩子监听,推荐使用以下 NuGet 包:

  • Gma.System.MouseKeyHook:用于监听全局鼠标事件,捕获鼠标移动和按键点击。
  • Newtonsoft.Json:用于将鼠标轨迹数据序列化成 JSON 格式进行保存和读取。

在 NuGet 包管理器中运行以下命令进行安装:

Install-Package Gma.System.MouseKeyHook
Install-Package Newtonsoft.Json

项目结构

整个项目的代码结构如下:

EsClearTextEdit
├─ MouseRecorder.cs      // 鼠标录制类
├─ MousePlayer.cs        // 鼠标回放类
└─ Form1.cs             // WinForms 主窗体

代码实现

1. 鼠标轨迹录制类

MouseRecorder.cs

作用

MouseRecorder 类负责监听鼠标事件,将鼠标的移动轨迹和点击动作记录下来,并按照时间间隔进行排序,最终保存成 JSON 文件。

代码解释
private List<MouseAction> actions = new List<MouseAction>();

这个列表用来存储鼠标的操作轨迹。

private IKeyboardMouseEvents _hook;

IKeyboardMouseEvents 是来自 Gma.System.MouseKeyHook 库的接口,提供全局事件监听。

public void StartRecording()
{_hook = Hook.GlobalEvents();_hook.MouseDownExt += MouseDown;_hook.MouseMove += MouseMove;lastTime = DateTime.Now;
}
  • Hook.GlobalEvents():注册全局鼠标监听。
  • MouseMove 事件监听鼠标移动。
  • MouseDownExt 事件监听鼠标点击。
  • lastTime 用来计算鼠标操作之间的时间间隔。
private void MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{actions.Add(new MouseAction { X = e.X, Y = e.Y, Action = "Move", Time = (int)(DateTime.Now - lastTime).TotalMilliseconds });lastTime = DateTime.Now;
}

这个方法记录鼠标移动的位置坐标 (X, Y) 以及动作名称 Move,并计算当前动作与上一个动作之间的时间间隔。

private void MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{actions.Add(new MouseAction { X = e.X, Y = e.Y, Action = e.Button.ToString(), Time = (int)(DateTime.Now - lastTime).TotalMilliseconds });lastTime = DateTime.Now;
}

这个方法记录鼠标点击的位置坐标 (X, Y) 和按键类型(LeftRight)。

public void Save(string fileName)
{File.WriteAllText(fileName, Newtonsoft.Json.JsonConvert.SerializeObject(actions));
}

使用 Newtonsoft.Json 将录制的轨迹序列化成 JSON 文件,方便保存和读取。

public void StopRecording()
{_hook.MouseMove -= MouseMove;_hook.MouseDownExt -= MouseDown;_hook.Dispose();
}

停止监听并释放资源。


2. 鼠标轨迹回放类

MousePlayer.cs

作用

MousePlayer 类负责读取保存的轨迹数据,并按照记录的轨迹模拟鼠标操作。

代码解释
[DllImport("user32.dll")]
private static extern void SetCursorPos(int X, int Y);

通过 Windows API 设置鼠标光标的位置。

[DllImport("user32.dll")]
private static extern void mouse_event(uint dwFlags, int dx, int dy, uint dwData, IntPtr dwExtraInfo);

Windows API 发送鼠标事件。

public void Play(List<MouseAction> actions)
{foreach (var action in actions){Thread.Sleep(action.Time);SetCursorPos(action.X, action.Y);if (action.Action == "Left"){mouse_event(MOUSEEVENTF_LEFTDOWN, action.X, action.Y, 0, IntPtr.Zero);mouse_event(MOUSEEVENTF_LEFTUP, action.X, action.Y, 0, IntPtr.Zero);}}
}

遍历录制的轨迹数据,按时间间隔模拟鼠标移动和左键点击。


3. 主窗体类

Form1.cs

代码解释
MouseRecorder recorder = new MouseRecorder();
MousePlayer player = new MousePlayer();

实例化录制类和回放类。

private void uiButton1_Click(object sender, EventArgs e)
{recorder.StartRecording();MessageBox.Show("录制开始!");
}

点击 开始录制 按钮启动鼠标轨迹录制。

private void uiButton2_Click(object sender, EventArgs e)
{recorder.StopRecording();recorder.Save("track.json");MessageBox.Show("保存成功!");
}

停止录制并保存轨迹。

private void uiButton3_Click(object sender, EventArgs e)
{var data = File.ReadAllText("track.json");var actions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MouseAction>>(data);player.Play(actions);
}

读取 JSON 文件并回放轨迹。

  private void uiButton3_Click(object sender, EventArgs e){var data = File.ReadAllText("track.json");var actions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MouseAction>>(data);player.Play(actions);}

源代码:

        MousePlayer类

        

public class MousePlayer{[DllImport("user32.dll")]private static extern void SetCursorPos(int X, int Y);[DllImport("user32.dll")]private static extern void mouse_event(uint dwFlags, int dx, int dy, uint dwData, IntPtr dwExtraInfo);private const uint MOUSEEVENTF_LEFTDOWN = 0x02;private const uint MOUSEEVENTF_LEFTUP = 0x04;public void Play(List<MouseAction> actions){foreach (var action in actions){Thread.Sleep(action.Time);SetCursorPos(action.X, action.Y);if (action.Action == "Left"){mouse_event(MOUSEEVENTF_LEFTDOWN, action.X, action.Y, 0, IntPtr.Zero);mouse_event(MOUSEEVENTF_LEFTUP, action.X, action.Y, 0, IntPtr.Zero);}}}}

        MouseRecorder类

        

 public class MouseRecorder{private List<MouseAction> actions = new List<MouseAction>();private IKeyboardMouseEvents _hook;private DateTime lastTime;public void StartRecording(){_hook = Hook.GlobalEvents();_hook.MouseDownExt += MouseDown;_hook.MouseMove += MouseMove;lastTime = DateTime.Now;}private void MouseMove(object sender, System.Windows.Forms.MouseEventArgs e){actions.Add(new MouseAction { X = e.X, Y = e.Y, Action = "Move", Time = (int)(DateTime.Now - lastTime).TotalMilliseconds });lastTime = DateTime.Now;}private void MouseDown(object sender, System.Windows.Forms.MouseEventArgs e){actions.Add(new MouseAction { X = e.X, Y = e.Y, Action = e.Button.ToString(), Time = (int)(DateTime.Now - lastTime).TotalMilliseconds });lastTime = DateTime.Now;}public void Save(string fileName){File.WriteAllText(fileName, Newtonsoft.Json.JsonConvert.SerializeObject(actions));}public void StopRecording(){_hook.MouseMove -= MouseMove;_hook.MouseDownExt -= MouseDown;_hook.Dispose();}}public class MouseAction{public int X { get; set; }public int Y { get; set; }public string Action { get; set; }public int Time { get; set; }}

        主窗体代码:

         

public partial class Form1 : Form{MouseRecorder recorder = new MouseRecorder();MousePlayer player = new MousePlayer();public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}/// <summary>/// 开始录制/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void uiButton1_Click(object sender, EventArgs e){recorder.StartRecording();}/// <summary>/// 停止/保存/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void uiButton2_Click(object sender, EventArgs e){recorder.StopRecording();recorder.Save("track.json");MessageBox.Show("保存成功!");}/// <summary>/// 读取文件,并且进行自动操作/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void uiButton3_Click(object sender, EventArgs e){var data = File.ReadAllText("track.json");var actions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MouseAction>>(data);player.Play(actions);}}

使用场景

我们可以在以下场景中使用

  1. 软件自动化测试:代替人工点击执行测试任务。
  2. 办公自动化:批量执行重复性任务。
  3. 游戏挂机脚本:重复执行游戏操作。

本代码只实现了基础功能,后续可以通过以下几个方面进行扩展优化

  • 支持右键点击
  • 鼠标滚轮操作
  • 录制暂停与恢复
  • 自定义播放速度

通过本文的介绍,相信大家已经掌握了鼠标轨迹录制与回放功能的实现方式。该功能在自动化测试和重复性工作中具有重要应用价值。后续可以进一步优化,增加更多扩展功能,形成一个完整的自动化工具。

http://www.whsansanxincailiao.cn/news/32037312.html

相关文章:

  • o2o网站建设渠道/手机百度2020最新版
  • 做网站一屏的尺寸是/ks刷粉网站推广马上刷
  • 服务行业网站建设/搜索引擎优化的基本原理
  • 苏州网站建设哪家效果好/营销软文是什么意思
  • 网站上可以做文字链接么/草莓永久地域网名入2022
  • c2c网站建设/站外引流推广渠道
  • 10类地方网站 总有适合你做的/企业培训内容包括哪些内容
  • 文件上传网站源码/香港旺道旺国际集团
  • 龙岗公司网站/企业推广策略
  • 大学生做网站怎么赚钱/网络营销活动策划
  • 网站设计培训班哪家好/网络营销八大工具
  • 国家企业信用公示信息年报入口/东莞seo建站咨询
  • 加强政府网站建设工作要求/网络推广主要是做什么工作
  • 网站需要更新的频率/有效的网络推广
  • 天津做网站外包公司/珠海百度搜索排名优化
  • seo优化百度seo谷歌seo外贸推广网站seo优化运/线上宣传有哪些好的方式方法
  • 石河子网站建设/长沙网站关键词推广
  • 网站群建设公司/百度明星搜索量排行榜
  • 做影视网站存储视频会侵权吗/家居seo整站优化方案
  • 凡科app/长沙seo排名优化公司
  • 上海那家网站做的好/搜索推广营销
  • 用dw做网站的基本步骤/企业网站分析报告
  • 怎么做装修网站/博客推广的方法与技巧
  • 手机网站开发例子/营销方案范文
  • 做web网站需要做网络通信吗/网站域名备案查询
  • 网站开发公司飞沐/网站排名首页
  • 3d模型代做网站/口碑营销的方法
  • 如何批量建网站/东莞疫情最新消息
  • 网站开发企业培训报名/百度网页入口
  • 搭建网站用什么语言/企业管理软件