import java.io.*; import java.util.*; import java.awt.*; import java.awt.event.*; /** * 支持脚本文件的按键控制程序 */ public class KeySprite{ public static void main(String[] args){ String filename = "test.t"; try{ //读取配置文件 Vector<String> v = readFile(filename); //执行文件 parseVector(v); }catch(IOException e){ e.printStackTrace(); System.out.println("配置文件错误"); }catch(Exception e){ System.out.println("其他错误"); } } /** * 读取文件到Vector中 * @param filepath 文件路径 */ public static Vector<String> readFile(String filepath) throws IOException{ Vector<String> v = new Vector<String>(); //文件缓冲输入流 BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream(filepath))); //读取数据 String s = br.readLine(); while(s != null){ //添加到v v.add(s); //读取下一行 s = br.readLine(); } //关闭输入流 br.close(); //返回数据 return v; } /** * 解析读到的Vector,并执行对应的操作 * @param v Vector对象 */ public static void parseVector(Vector<String> v){ int size = v.size(); try{ //创建Robot对象 Robot r = new Robot(); for(int i = 0;i < size;i++){ String s = v.get(i); //分解 String[] data = s.split(" "); //解析执行 if(data[0].equals("移动")){ //获得坐标 int x = Integer.parseInt(data[1]); int y = Integer.parseInt(data[2]); //移动 r.mouseMove(x,y); }else if(data[0].equals("按键")){ for(int k=1;k<data.length;k++) { //获得按键种类 char c = data[k].toLowerCase().charAt(0); //按键 r.keyPress(c); //释放 r.keyRelease(c); r.setAutoDelay(100); } }else if(data[0].equals("暂停")){ //获得暂停时间 int time = Integer.parseInt(data[1]); //暂停 r.setAutoDelay(time); }else if(data[0].equals("点击")){ r.mousePress(InputEvent.BUTTON1_MASK); r.mouseRelease(InputEvent.BUTTON1_MASK); }else if(data[0].equals("退格")) { int n = Integer.parseInt(data[1]); for(int k=0;k<n;k++) { r.keyPress(KeyEvent.VK_BACK_SPACE); r.keyRelease(KeyEvent.VK_BACK_SPACE); r.setAutoDelay(100); } } } }catch(Exception e){ e.printStackTrace(); } } } 脚本文件test.t 暂停 1000 移动 600 1004 点击 移动 761 442 点击 退格 3 按键 1 2 3