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 ...
随机推荐
- c# &与&& 和 |与||的区别(转载)
&:按位与,对两个条件都进行判断&&:逻辑与,只要一个条件满足,另外一个条件就不会执行 同理:|:按位或,对两个条件都进行判断||:逻辑或,只要一个条件满足,另外一个条件就不会 ...
- 微信小程序上传项目到github
Step1:点击使用版本控制 点击开发工具右上角的版本控制按钮 Step2:点击初始化本地仓库: 等待初始化结束 Step3:在github新建仓库 Step4: 配置git用户密码或ssh: Ste ...
- 《高性能Javascript》 Summary(三)
第八章.编程实践 Programming Practices 经验: 避免使用 eval_r()和Function构造器避免二次评估.此外,给setTimeout()和setInterval()函数传 ...
- 【转】BigInteger、BigDecimal详解
参考 http://lavasoft.blog.51cto.com/62575/228705/ 从Java4到Java5,Java对BigInteger.BigDecimal两个类功能一直再做扩展与改 ...
- 【ES6】更易于继承的类语法
和其它面向对象编程语言一样,ES6 正式定义了 class 类以及 extend 继承语法糖,并且支持静态.派生.抽象.迭代.单例等,而且根据 ES6 的新特性衍生出很多有趣的用法. 一.类的基本定义 ...
- CodeForces - 960F Pathwalks —— 主席树(n棵线段树)
题目链接:https://vjudge.net/problem/CodeForces-960F You are given a directed graph with n nodes and m ed ...
- 使用C语言解析URL
1. [代码]容易写成自己输入URL,这里测试一个例子 #include <stdio.h>#include <stdlib.h>#include <string ...
- 单元测试:TESTNG和powermock的使用
pom文件: <properties> <testng.version>6.8</testng.version> <powermo ...
- tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)
iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This f ...
- [Android Studio] Android Studio快速定位当前打开的文件在哪个目录(package)下
转载自:http://blog.csdn.net/hyr83960944/article/details/38067499 在Eclipse中有一个很好的功能,就是比如我打开一个AActivity,左 ...