Java隐藏技-自动化机器人

简介: Java隐藏技-自动化机器人

简介


Robot类用于模拟鼠标、键盘事件,生成本机系统输入事件。


Robot 的主要用于自动化、自运行的程序和其他需要自动控制鼠标和键盘的程序

相当于实际操作的效果,不仅仅只是生成对应的鼠标、键盘事件。 比如Robot.mouseMove() 将实际移动鼠标光标,而不是只生成鼠标移动事件。


实现的是本机的全局模拟,不仅仅局限于写的程序和IDE


常用方法


image.png


小栗子


1、自动编码


了解了常用方法后,就能够快速想到用这些方法实现自动写代码功能

下面简单模拟实现控制台打印


  • 调用IDEA输出快捷键sout
  • 回车后实现完整输出System.out.println();
  • 在输出位置写入2-1


public static void main(String[] args) throws AWTException {
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_S);
    robot.keyRelease(KeyEvent.VK_S);
    robot.keyPress(KeyEvent.VK_O);
    robot.keyRelease(KeyEvent.VK_O);
    robot.keyPress(KeyEvent.VK_U);
    robot.keyRelease(KeyEvent.VK_U);
    robot.delay(100);
    robot.keyPress(KeyEvent.VK_T);
    robot.keyRelease(KeyEvent.VK_T);
    robot.delay(500);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    robot.delay(500);
    robot.keyPress(KeyEvent.VK_2);
    robot.keyRelease(KeyEvent.VK_2);
    robot.delay(500);
    robot.keyPress(KeyEvent.VK_MINUS);
    robot.keyRelease(KeyEvent.VK_MINUS);
    robot.delay(500);
    robot.keyPress(KeyEvent.VK_1);
    robot.keyRelease(KeyEvent.VK_1);
}

最终效果:

image.png


2、画图


其实画图也就是用画图中的工具,然后模拟鼠标拖拽动作,主要分为如下几步


  • 打开画图软件
  • 选中椭圆
  • 运行程序
public static void main(String[] args) throws AWTException {
    Robot robot = new Robot(); 
    robot.delay(5000);//等待5秒 5秒后必须打开画图板选中椭圆才可正常运行
   //第一个圆
    int i = 10;
    while (i-- > 0) {
        robot.mouseMove(400, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(650, 550);
    }
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.delay(1000);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
    //第二个圆
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(0, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(600, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(850, 550);
    }
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.delay(1000);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
    //第三个圆
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(0, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(800, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);       //这里延迟0.2s,可以看到动态画的过程
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(1050, 550);
    }
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.delay(200);       //画完一个圆停止0.1s,否则因为计算机执行速度太快,看不到动态作图的过程
    //第四个圆
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(0, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(500, 425);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(750, 675);
    }
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.delay(200);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
    //第五个圆
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(0, 300);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(700, 425);
    }
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
    i = 10;
    while (i-- > 0) {
        robot.mouseMove(950, 675);
    }
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.delay(200);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
}

最终效果:

image.png


小结


Java中Robot类不是很常用,却是很有用的一个类,能实现一些很有意思的功能,看了上面栗子你可能会问为什么不模拟输出"Hello word"呢,这是因为我不会用KeyEvent输出双引号“”,你可以试试,如果可以评论@我。


目录
相关文章
|
9月前
|
算法 Java 大数据
Java 大视界 --Java 大数据在智能医疗远程手术机器人控制与数据传输中的技术支持(215)
本文深入探讨 Java 大数据在智能医疗远程手术机器人控制与数据传输中的关键技术应用,涵盖数据采集、分布式计算、延迟补偿算法、数据压缩与加密传输等内容,并结合多个跨国手术案例,展示 Java 大数据如何赋能远程医疗,实现高精度、低延迟、安全可靠的手术支持,为医疗行业的数字化转型提供坚实技术支撑。
|
10月前
|
人工智能 自然语言处理 监控
生成式AI客服实战:智能客服机器人5大自动化能力处理80%高频咨询,释放60%客服人力
生成式AI驱动的智能客服机器人通过五大核心能力自动化处理80%高频咨询,释放60%客服人力。以合力亿捷方案为例,融合大模型与业务知识图谱,实现服务精准化、决策智能化,推动企业服务成本下降超40%。
751 0
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
2954 10
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
1034 9
|
机器学习/深度学习 传感器 算法
智能机器人在工业自动化中的应用与前景###
本文探讨了智能机器人在工业自动化领域的最新应用,包括其在制造业中的集成、操作灵活性和成本效益等方面的优势。通过分析当前技术趋势和案例研究,预测了智能机器人未来的发展方向及其对工业生产模式的潜在影响。 ###
1024 9
|
XML Java 测试技术
Selenium WebDriver自动化测试(基础篇):不得不掌握的Java基础
关于Selenium WebDriver自动化测试的Java基础篇,涵盖了Java的变量、数据类型、字符串操作、运算符、流程控制、面向对象编程、关键字用法、权限修饰符、异常处理和IO流等基础知识点,为进行自动化测试提供了必要的Java语言基础。
415 1
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
309 1
|
传感器 机器学习/深度学习 人工智能
智能农业机器人:自动化种植与收割
【10月更文挑战第22天】随着科技的发展,智能农业机器人正逐步改变传统农业生产方式,引领农业走向自动化、智能化和高效化的新时代。本文将探讨智能农业机器人在精准种植、智能灌溉、高效收割和病虫害监测等方面的应用及其带来的变革。通过典型案例分析,展示智能农业机器人的优势与挑战,并展望其未来发展趋势。
1037 0