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(); // 按下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); // 设置默认休眠时间20毫秒
robot.setAutoDelay();
for (String c : "class".split("")) {
if (Character.isUpperCase(c.charAt())) {
// 如果是大写
// 输入名字
// 按下弹起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();
// 按下弹起回车键
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER); String automaton = "Automaton";
robot.setAutoDelay();
for (String c : automaton.split("")) {
if (Character.isUpperCase(c.charAt())) {
// 如果是大写
// 按下弹起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();
// 按下弹起回车键
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();
for (String c : "main".split("")) { if (Character.isUpperCase(c.charAt())) {
// 如果是大写
// 输入名字
// 按下弹起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();
// 按下弹起alt+/的快捷键
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_SLASH);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_SLASH);
// 休眠500,过快自动提示可能不会出现
robot.delay();
// 按下弹起回车键
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER); // 设置默认休眠时间,让输入字母快一点
robot.setAutoDelay();
for (String c : "syso".split("")) {
if (Character.isUpperCase(c.charAt())) {
// 如果是大写
// 按下弹起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();
// 循环输入Hellow Word
for (String c : "Hellow Word,I am a skynet".split("")) {
if (Character.isUpperCase(c.charAt())) {
// 输入名字
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);
//
}
}
java使用Robot类在eclipse上实现自动编写代码的更多相关文章
- java如何在eclipse编译时自动生成代码
用eclipse写java代码,自动编译时,如何能够触发一个动作,这个动作是生成本项目的代码,并且编译完成后,自动生成的代码也编译好了, java编辑器中就可以做到对新生成的代码的自动提示? 不生成代 ...
- 在eclipse上集成安装阿里巴巴代码规约P3C插件
在eclipse上集成安装阿里巴巴代码规约P3C插件 参照网址: https://jingyan.baidu.com/article/2d5afd6923e78b85a3e28e5e.html 首先进 ...
- Java关于Robot类的使用以及远程桌面的实现
利用Robot实现效果是运行之后鼠标自动定位到整个屏幕坐标系的(635,454)位置,输入wangtianze package com.wtz.util; import java.awt.AWTExc ...
- Java关于Robot类的使用
利用Robot类实现自动操作,实现效果是运行之后鼠标自动定位到整个屏幕坐标系的(635,454)位置,输入wangtianze package com.wtz.util; import java.aw ...
- java类在eclipse上打jar包,Linux上成功运行的实例
1 eclipse下的java项目结构如下图所示: 2 打包的步骤如下: 3 修改minifest.mf文件: 4 .上传需要的三方jar包们和主类打的jar(案例是topV.jar)并且执行jav ...
- java http工具类和HttpUrlConnection上传文件分析
利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...
- Selenium(基于JAVA语言)-》在eclipse上运行web项目在Mac系统上启动时提示nodename nor servname provided解决办法
最近使用eclipse进行自动化测试时,遇到一种情况,无法调起浏览器,且有报错,如下: org.openqa.selenium.WebDriverException: failed to lookup ...
- JAVA中使用FTPClient实现文件上传下载实例代码
一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- Eclipse 中怎样自动格式化代码?
首先 有一个 检查代码风格的工具叫checkstyle,具体怎么下载,请自行百度.. 当你在eclipse安装好 checkstyle后,对于使用google标准的人来说,选择一个项目,右键,点击ch ...
随机推荐
- [2017-11-21]Abp系列——T4应用:权限树定义
本系列目录:Abp介绍和经验分享-目录 今天介绍下,如何使用T4根据json文件自动生成权限定义. 先看成果 成果是: 要新增一个权限定义时,打开Json文件,找到目标节点,加个权限定义: 生成下Co ...
- 《CSS权威指南(第三版)》---第六章 文本属性
本章主要的内容是: 1.文本缩进: text-indent.行内元素无法缩进,一般用左内边距或外边距来创造这种效果. 2.文本对齐:text-align .只应用于块状元素. 3.行高:一般line- ...
- laravel基础课程---14、表单验证(lavarel如何进行表单验证)
laravel基础课程---14.表单验证(lavarel如何进行表单验证) 一.总结 一句话总结: lavarel的验证的功能比tp要[简单]且[强大]很多 直接控制器中:添加[规则数组]和[修改提 ...
- [acm]HDOJ 2673 shǎ崽 OrOrOrOrz
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2673 拍两次序,交替输出 #include<iostream> #include< ...
- onhashchange
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【Lintcode】137.Clone Graph
题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. ...
- Django | 执行项目下指定的脚本
1 描述 有时候会碰到这样的场景,对于一些业务升级,我需要把数据库数据做些处理,同时又想以 Django 项目的环境变量执行脚本,这个时候使用 python 脚本是再适合不过的手段了. 2 使用自带的 ...
- Poj_1005_I Think I Need A HouseBoat
一.Description Fred Mapper is considering purchasing some land in Louisiana to build his house on. In ...
- mina2中的线程池
一.Mina中的线程池模型 前面介绍了Mina总体的层次结构,那么在Mina里面是怎么使用Java NIO和进行线程调度的呢?这是提高IO处理性能的关键所在.Mina的线程调度原理主要如下图所示: A ...
- 使用远程线程来注入DLL
使用远程线程来注入DLL DLL注入技术要求我们目标进程中的一个线程调用LoadLibrary来载入我们想要的DLL (1)用OpenProcess函数打开目标进程(2)用VirtualAllocEx ...