打字机
向当前获得焦点的界面发出一系列键盘事件进行打字(英文输入)
java 代码
package myrobot;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class RobotTest
{
public static void main(String[] args) throws AWTException
{
//一个机器人
Robot robot = new Robot();
//一个击键动作后的休眠时间
robot.setAutoDelay(100);
//等待5秒
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.printf("sleep!");
}
String str="I'm Robot.\n I can type.\n"
+ "And make no mistakes.\n"
+ "If you don't believe it, \n"
+ "\"Let's go\" \n";
for(int i=0;i<str.length();i++)
{
//字符转换 KeyEvent.VK_A至 KeyEvent.VK_Z(65~90)
if(str.charAt(i)>=97&&str.charAt(i)<=122) {
robot.keyPress(str.charAt(i)-32);
robot.keyRelease(str.charAt(i)-32);
}else if(str.charAt(i)>=65&&str.charAt(i)<=90) {
robot.keyPress(str.charAt(i));
robot.keyRelease(str.charAt(i));
}else if(str.charAt(i)==',') {//逗号
robot.keyPress(KeyEvent.VK_COMMA);
robot.keyRelease(KeyEvent.VK_COMMA);
}else if(str.charAt(i)=='.') {//句号
robot.keyPress('.');
robot.keyRelease('.');
System.out.println("单击"+(int)str.charAt(i));
}else if(str.charAt(i)=='\'') {//单引号,需转义
robot.keyPress(KeyEvent.VK_QUOTE);
robot.keyRelease(KeyEvent.VK_QUOTE);
}else if(str.charAt(i)=='\n') {//换行符
robot.keyPress('\n');
robot.keyRelease('\n');
}else if(str.charAt(i)=='"') {
//双引号 虽然有定义KeyEvent.VK_QUOTEDBL
//但它是KeyEvent.VK_QUOTE与KeyEvent.VK_SHIFT组合
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_QUOTE);
robot.keyRelease(KeyEvent.VK_QUOTE);
robot.keyRelease(KeyEvent.VK_SHIFT);
}else {
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);
}
}
}
}