java robot 机器人自动化,实现记事本自动输入自己的备忘录

Posted 洛阳泰山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java robot 机器人自动化,实现记事本自动输入自己的备忘录相关的知识,希望对你有一定的参考价值。

  我正在参与CSDN《新程序员》有奖征文,活动地址

  https://marketing.csdn.net/p/52c37904f6e1b69dc392234fff425442

 

正言 

        最近粉丝停止增长,博主慌了一逼,赶紧写篇文章,活跃一下,求各位多多关注!!!

 

     最近工作也有些变动,时间不像以前那么充裕了,一时之间,也不知道写点什么好,本来还想继续写java视频处理的文章和代码,后来想想有点费时间,于是就对自己以前做java robot自动化方面的一点研究的代码,分享出来,共大家学习。毕竟java做自动化的文章相对与做web的文章少太多了。

切入正题,代码主要用到都是java.awt.Robot包下的代码方法实现的,不需要引入第三饭jar。只需要安装好jdk即可。

核心代码单类实现,复制到idea等编辑器里,主方法运行即可。




import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Java小机器人打开记事本自己输入文字
 * @author Wayss
 *
 */

public class TestInput {
    public static void main(String[] args) throws Exception {
        Robot robot = new Robot();
        //调用系统方法打开记事本
        Runtime.getRuntime().exec("notepad");
        robot.delay(2000);
        //全屏显示
      //  keyPressWithAlt(robot,KeyEvent.VK_SPACE);
        //输入x
        //keyPress(robot, KeyEvent.VK_X);
        //输入回车
        keyPress(robot, KeyEvent.VK_ENTER);
        robot.delay(1000);
        //输入字符串
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String text="王思聪语录 \\n "
                +"宝,我去输入液了,输的什么液,想你的夜。\\n"
                +"你都不知道心疼人的 \\n"
                +"被一个人牵动的情绪很烦,但是也可以很甜蜜。\\n";
        keyPressString(robot, text+"\\n 日期:"+ sdf.format(date));
    }

    //Shift组合键
    public static void keyPressWithShift(Robot r, int key) {
        //按下Shift
        r.keyPress(KeyEvent.VK_SHIFT);
        //按下某个键
        r.keyPress(key);

        //释放某个键
        r.keyRelease(key);
        //释放Shift
        r.keyRelease(KeyEvent.VK_SHIFT);
        //等待100ms
        r.delay(100);
    }

    //Ctrl组合键
    public static void keyPressWithCtrl(Robot r, int key) {
        r.keyPress(KeyEvent.VK_CONTROL);
        r.keyPress(key);
        r.keyRelease(key);
        r.keyRelease(KeyEvent.VK_CONTROL);
        r.delay(100);
    }

    //Ctrl组合键
    public static void keyPressWithCtrl(Robot r, int key1,int key2) {
        r.keyPress(KeyEvent.VK_CONTROL);
        r.keyPress(key1);
        r.keyPress(key2);
        r.keyRelease(key2);
        r.keyRelease(key1);
        r.keyRelease(KeyEvent.VK_CONTROL);
        r.delay(100);
    }

    //Alt组合键
    public static void keyPressWithAlt(Robot r, int key) {
        r.keyPress(KeyEvent.VK_ALT);
        r.keyPress(key);
        r.keyRelease(key);
        r.keyRelease(KeyEvent.VK_ALT);
        r.delay(100);
    }

    //Alt组合键
    public static void keyPressWithAlt(Robot r, int key1,int key2) {
        r.keyPress(KeyEvent.VK_ALT);
        r.keyPress(key1);
        r.keyPress(key2);
        r.keyRelease(key2);
        r.keyRelease(key1);
        r.keyRelease(KeyEvent.VK_ALT);
        r.delay(100);
    }

    //输入字符串
    public static void keyPressString(Robot r, String str) {
        //获取剪切板
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        //将传入字符串封装下
        Transferable tText = new StringSelection(str);
        //将字符串放入剪切板
        clip.setContents(tText, null);
        //按下Ctrl+V实现粘贴文本
        keyPressWithCtrl(r, KeyEvent.VK_V);
        r.delay(100);
    }

    //输入数字
    public static void keyPressNumber(Robot r, int number) {
        //将数字转成字符串
        String str = Integer.toString(number);
        //调用字符串的方法
        keyPressString(r, str);
    }

    //实现按一次某个按键
    public static void keyPress(Robot r, int key) {
        //按下键
        r.keyPress(key);
        //释放键
        r.keyRelease(key);

        r.delay(1000);
    }

    //快速打开QQ消息(这个组合键因人而异)
    public static void keyPressAtlWithCtrlWithZ(Robot r) {
        r.keyPress(KeyEvent.VK_ALT);
        r.keyPress(KeyEvent.VK_CONTROL);
        r.keyPress(KeyEvent.VK_Z);
        r.keyRelease(KeyEvent.VK_Z);
        r.keyRelease(KeyEvent.VK_CONTROL);
        r.keyRelease(KeyEvent.VK_ALT);
    }

    //点击一下鼠标左键
    public static void mouseLeftHit(Robot r) {
        r.mousePress(KeyEvent.BUTTON1_DOWN_MASK);
        r.mouseRelease(KeyEvent.BUTTON1_DOWN_MASK);
        r.delay(1000);
    }
}

代码中封装了不少的方法,比如鼠标点击、双击、长按,键盘按键方法,组合按键的方法。

运行结果图示

这个教程虽然简单,却能让你学会,java 控制鼠标键盘的大部分操作代码,后续自由发挥,以此为基础,写一些简单的游戏代练脚本,也是可以实现的。

加油!打工人!!!

以上是关于java robot 机器人自动化,实现记事本自动输入自己的备忘录的主要内容,如果未能解决你的问题,请参考以下文章

Java里鲜为人知的“机器人”类库

如何实现Robot框架在两台不同机器上并行测试执行?

Pycharm for Robot 框架中的自动完成

Java关于Robot类的使用以及远程桌面的实现

Robot Framework自动化测试框架超强教程

robot framework + python实现http接口自动化测试框架