java使用Robot类在eclipse上实现自动编写代码

运行时,把输入法关掉,切换成系统自带的输入法即可;

第二个类是自定义的键值Map集合,主要是为了方便输入字符串,有需要的可以自行添加;

主要的代码如下,会创建一个名称为Automaton.java的类,并输出"Hellow Word,I am a skynet"

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class Hellow {
    public static void main(String[] args) throws AWTException, InterruptedException, IOException {

        // 创建机器人
        Robot robot = new Robot();
        // 设置默认休眠时间
        robot.setAutoDelay(300);

        // 按下alt键
        robot.keyPress(KeyEvent.VK_ALT);
        // 按下shift键
        robot.keyPress(KeyEvent.VK_SHIFT);
        // 按下n键
        robot.keyPress(KeyEvent.VK_N);

        robot.keyRelease(KeyEvent.VK_ALT);
        robot.keyRelease(KeyEvent.VK_SHIFT);
        robot.keyRelease(KeyEvent.VK_N);

        // 连续两次上键
        robot.keyPress(KeyEvent.VK_UP);
        robot.keyRelease(KeyEvent.VK_UP);

        // 按下弹起回车键
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        // 设置默认休眠时间
        robot.setAutoDelay(20);
        for (String c : "class".split("")) {
            if (Character.isUpperCase(c.charAt(0))) {
                // 如果是大写
                // 输入名字
                // 按下弹起CapsLock键,为了切换大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
                // 按下弹起CapsLock键,切换回原来的大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
            } else {
                // 如果是小写
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
            }
        }
        // 设置默认休眠时间
        robot.setAutoDelay(300);
        // 按下弹起回车键
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        String automaton = "Automaton";
        robot.setAutoDelay(20);
        for (String c : automaton.split("")) {
            if (Character.isUpperCase(c.charAt(0))) {
                // 如果是大写
                // 按下弹起CapsLock键,为了切换大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
                // 按下弹起CapsLock键,切换回原来的大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
            } else {
                // 如果是小写
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
            }
        }
        robot.setAutoDelay(300);
        // 按下弹起回车键
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        // 连续三次下键
        robot.keyPress(KeyEvent.VK_DOWN);
        robot.keyRelease(KeyEvent.VK_DOWN);
        robot.keyPress(KeyEvent.VK_DOWN);
        robot.keyRelease(KeyEvent.VK_DOWN);
        robot.keyPress(KeyEvent.VK_DOWN);
        robot.keyRelease(KeyEvent.VK_DOWN);

        // 创建main方法
        // 设置默认休眠时间,让输入字母快一点
        robot.setAutoDelay(20);
        for (String c : "main".split("")) {

            if (Character.isUpperCase(c.charAt(0))) {
                // 如果是大写
                // 输入名字
                // 按下弹起CapsLock键,为了切换大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
                // 按下弹起CapsLock键,切换回原来的大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
            } else {
                // 如果是小写
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
            }
        }
        // 设置休眠时间为300秒
        robot.setAutoDelay(300);
        // 按下弹起alt+/的快捷键
        robot.keyPress(KeyEvent.VK_ALT);
        robot.keyPress(KeyEvent.VK_SLASH);
        robot.keyRelease(KeyEvent.VK_ALT);
        robot.keyRelease(KeyEvent.VK_SLASH);
        // 休眠500秒,过快自动提示可能不会出现
        robot.delay(500);
        // 按下弹起回车键
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        // 设置默认休眠时间,让输入字母快一点
        robot.setAutoDelay(20);
        for (String c : "syso".split("")) {
            if (Character.isUpperCase(c.charAt(0))) {
                // 如果是大写
                // 按下弹起CapsLock键,为了切换大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
                // 按下弹起CapsLock键,切换回原来的大小写
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
            } else {
                // 如果是小写
                // 循环每个字符,根据字符取出map中存储的键值
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
            }
        }
        // 按下弹起alt+/的快捷键
        robot.keyPress(KeyEvent.VK_ALT);
        robot.keyPress(KeyEvent.VK_SLASH);
        robot.keyRelease(KeyEvent.VK_ALT);
        robot.keyRelease(KeyEvent.VK_SLASH);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.keyPress(KeyEvent.VK_QUOTE);
        robot.keyRelease(KeyEvent.VK_SHIFT);
        robot.keyRelease(KeyEvent.VK_QUOTE);
        // 休眠50秒,过快自动提示可能不会出现
        robot.delay(50);
        // 循环输入Hellow Word
        for (String c : "Hellow Word,I am a skynet".split("")) {
            if (Character.isUpperCase(c.charAt(0))) {
                // 输入名字
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyPress(KeyEvent.VK_CAPS_LOCK);
                robot.keyRelease(KeyEvent.VK_CAPS_LOCK);
            } else {
                robot.keyPress(KeyMap.keyMap.get(c.toUpperCase()));
                robot.keyRelease(KeyMap.keyMap.get(c.toUpperCase()));
            }
        }
        // 保存 按下弹起ctrl+s
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_S);
        // 运行 按下弹起ctrl+F11
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_F11);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_F11);

    }
}

下面是储存键值的map类,只有一些常用的键值,有需要请自行添加

import java.awt.event.KeyEvent;
import java.util.HashMap;
import java.util.Map;

public class KeyMap {
    public static Map<String,Integer> keyMap;
    static{
        keyMap = new HashMap<String,Integer>();
        //设置map的值
        //数字
        keyMap.put("1", KeyEvent.VK_1);
        keyMap.put("2", KeyEvent.VK_2);
        keyMap.put("3", KeyEvent.VK_3);
        keyMap.put("4", KeyEvent.VK_4);
        keyMap.put("5", KeyEvent.VK_5);
        keyMap.put("6", KeyEvent.VK_6);
        keyMap.put("7", KeyEvent.VK_7);
        keyMap.put("8", KeyEvent.VK_8);
        keyMap.put("9", KeyEvent.VK_9);
        keyMap.put("0", KeyEvent.VK_0);

        //运算符
        keyMap.put("/", KeyEvent.VK_SLASH);
        keyMap.put("+", KeyEvent.VK_PLUS);
        keyMap.put("-", KeyEvent.VK_MINUS);
        keyMap.put(" ", KeyEvent.VK_SPACE);
        keyMap.put("=", KeyEvent.VK_EQUALS);

        //特殊字符
        keyMap.put(":", KeyEvent.VK_COLON);
        keyMap.put(",", KeyEvent.VK_COMMA);
        keyMap.put(".", KeyEvent.VK_PERIOD);

        //字母
        keyMap.put("A",KeyEvent.VK_A);
        keyMap.put("B",KeyEvent.VK_B);
        keyMap.put("C",KeyEvent.VK_C);
        keyMap.put("D",KeyEvent.VK_D);
        keyMap.put("E",KeyEvent.VK_E);
        keyMap.put("F",KeyEvent.VK_F);
        keyMap.put("G",KeyEvent.VK_G);
        keyMap.put("H",KeyEvent.VK_H);
        keyMap.put("I",KeyEvent.VK_I);
        keyMap.put("J",KeyEvent.VK_J);
        keyMap.put("K",KeyEvent.VK_K);
        keyMap.put("L",KeyEvent.VK_L);
        keyMap.put("M",KeyEvent.VK_M);
        keyMap.put("N",KeyEvent.VK_N);
        keyMap.put("O",KeyEvent.VK_O);
        keyMap.put("P",KeyEvent.VK_P);
        keyMap.put("Q",KeyEvent.VK_Q);
        keyMap.put("R",KeyEvent.VK_R);
        keyMap.put("S",KeyEvent.VK_S);
        keyMap.put("T",KeyEvent.VK_T);
        keyMap.put("U",KeyEvent.VK_U);
        keyMap.put("V",KeyEvent.VK_V);
        keyMap.put("W",KeyEvent.VK_W);
        keyMap.put("X",KeyEvent.VK_X);
        keyMap.put("Y",KeyEvent.VK_Y);
        keyMap.put("Z",KeyEvent.VK_Z);
        //
    }
}
时间: 2024-11-12 18:52:17

java使用Robot类在eclipse上实现自动编写代码的相关文章

Eclipse保存时自动格式化代码

        使用Eclipse很长时间了,但是Eclipse有好多快捷好用的功能没有使用,现在在广州做项目,好多东西之前只是听过或者是简单的用,只是用到了皮毛,从身边人身上学到了一些东西,从eclipse软件使用开始分享.          eclipse保存时自动格式化代码,只需要在eclipse里设置一下就可以,eclipse自带这个功能,只是默认没有选中,要实现这个功能,只需要选上即可.具体的步骤:windows-->Preferences-->Java --> Editor-

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

利用Robot类实现自动操作,实现效果是运行之后鼠标自动定位到整个屏幕坐标系的(635,454)位置,输入wangtianze 1 package com.wtz.util; 2 3 import java.awt.AWTException; 4 import java.awt.Robot; 5 import java.awt.event.InputEvent; 6 import java.awt.event.KeyEvent; 7 8 /** 9 * @author wangtianze QQ

java http工具类和HttpUrlConnection上传文件分析

利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java中上传文件. Java使用HttpURLConnection上传文件 使用HttpUrlConnection进行post请求上传文件 封装HttpClient4.3.x包括文件上传 使用 HttpClient 4 进行文件上传 httpclient4教程 下面分享一个自己封装的http工具类(暂不直

eclipse保存时自动格式化代码和优化导包

Java基础-异常类--异常概念、一般格式、Throwable类的一些方法

简介: 1.异常的概念 异常:问题-->不正常情况--->封装成对象 ; java对不同的不正常情况进行描述后的对象体现; 对于严重的异常,java通过Error类进行描述-------一般不编写针对性的代码对其进行处理 对于非严重可处理的异常的,java通过Exception类进行描述--可使用针对性的代码进行处理 体系: Object<--Throwable<--Error/Exception 2.一般格式 try{ * * } catch(异常类 变量){ * 处理问题* }

Java -- 在Eclipse上使用Spring

在.NET上用的VS.NET+Spring.net+Nhibernate,到了Java平台上,自然对应着Eclipse+Spring+Hibernate.上一篇文章介绍了如何在Eclipse上使用Hibernate的入门,本文就简单介绍一下如何在Eclipse使用Spring. (1)首先,是下载Spring,可以从sourceforge上下载,http://sourceforge.net/projects/springframework.目前的最新的可以下载 spring-framework-

Java -- 在Eclipse上使用Hibernate

最近一个项目要用Java做,一点都不熟啊.没办法,只好硬着头皮啃了,花了大半天的时间,终于在Eclipse上完成了第一个Hibernate例子.下面记录关键的步骤,权作笔记,以备日后查看. (1)下载Hibernate,并向项目中导入Hibernate.     Project->Properies->Java Build Path->Libraries->Add External JARs...,选择Hibernate根目录下的hibernate3.jar,添加到项目中.    

Selenium Webdriver自动化测试设计(webdriver自动化架构设计、定义接口、日志处理、Java Robot类应用)

给各位网友分享一套课程,有兴趣的可以加我 2748165793 更多免费资料,可以查看http://blog.sina.com.cn/sonyandnokia码农的开心乐园 课程大纲第1章节:课程介绍概要介绍selenium介绍webdirver介绍webdriver环境搭建 第2章节Selenium IDE介绍IDE实例讲解录制回放过程录制脚本的导出IDE插件的介绍以及安装方法 第3章节Selenium 识别对象的方法包括:id,name,class name,link text,partia

Java基础 - 第2天 Eclipse、运算符、Scanner类

第1章    Eclipse 1.1     Eclipse概述 l 概述 Eclipse是一个专门针对Java的集成开发工具(IDE),是IBM公司的产品.是免费.开源.由Java语言编写.所以,需要有JRE运行环境并配置好环境变量.它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是Eclipse进行开发. l 特点描述 n 免费 n 纯Java语言编写 n 免安装 n 扩展性强 l 下载和安装 n 下载 http://eclipse.org/ n 安装 绿色版 解压