Windows端收到Android端传递来的键盘或鼠标操作信息以后,需要根据这些信息操作鼠标或键盘,这就需要用到java.awt.Robot类,该类用于控制鼠标或键盘。
在Java主窗体中定义:
public static Robot rbt;
在主窗体的构造函数中初始化Robot:
// 初始化Robot
try{
rbt = new Robot();
}
catch(Exception e){
l_status.setText("错误:" + e);
}
再定义一个静态方法:
// Robot
public static void rbt_act(String str_mk){
String[] tmps;
tmps = str_mk.split("/");
// 移动鼠标
if (is_numeric(tmps[0])){
mouse_point = MouseInfo.getPointerInfo().getLocation();
rbt.mouseMove(mouse_point.x+Integer.parseInt(tmps[0]),
mouse_point.y+Integer.parseInt(tmps[1]));
}
// 鼠标按键
else if (tmps[0].equals("b")){
if (tmps[1].equals("l")){
rbt.mousePress(InputEvent.BUTTON1_MASK);
rbt.mouseRelease(InputEvent.BUTTON1_MASK);
}
if (tmps[1].equals("r")){
rbt.mousePress(InputEvent.BUTTON3_MASK);
rbt.mouseRelease(InputEvent.BUTTON3_MASK);
}
}
// 点击键盘
else if (tmps[0].equals("k")){
switch (tmps[1])
{
case "a":
rbt.keyPress(KeyEvent.VK_A);
rbt.keyRelease(KeyEvent.VK_A);
break;
case "b":
rbt.keyPress(KeyEvent.VK_B);
rbt.keyRelease(KeyEvent.VK_B);
break;
case "c":
rbt.keyPress(KeyEvent.VK_C);
rbt.keyRelease(KeyEvent.VK_C);
break;
case "d":
rbt.keyPress(KeyEvent.VK_D);
rbt.keyRelease(KeyEvent.VK_D);
break;
case "e":
rbt.keyPress(KeyEvent.VK_E);
rbt.keyRelease(KeyEvent.VK_E);
break;
case "f":
rbt.keyPress(KeyEvent.VK_F);
rbt.keyRelease(KeyEvent.VK_F);
break;
case "g":
rbt.keyPress(KeyEvent.VK_G);
rbt.keyRelease(KeyEvent.VK_G);
break;
case "h":
rbt.keyPress(KeyEvent.VK_H);
rbt.keyRelease(KeyEvent.VK_H);
break;
case "i":
rbt.keyPress(KeyEvent.VK_I);
rbt.keyRelease(KeyEvent.VK_I);
break;
case "j":
rbt.keyPress(KeyEvent.VK_J);
rbt.keyRelease(KeyEvent.VK_J);
break;
case "k":
rbt.keyPress(KeyEvent.VK_K);
rbt.keyRelease(KeyEvent.VK_K);
break;
case "l":
rbt.keyPress(KeyEvent.VK_L);
rbt.keyRelease(KeyEvent.VK_L);
break;
case "m":
rbt.keyPress(KeyEvent.VK_M);
rbt.keyRelease(KeyEvent.VK_M);
break;
case "n":
rbt.keyPress(KeyEvent.VK_N);
rbt.keyRelease(KeyEvent.VK_N);
break;
case "o":
rbt.keyPress(KeyEvent.VK_O);
rbt.keyRelease(KeyEvent.VK_O);
break;
case "p":
rbt.keyPress(KeyEvent.VK_P);
rbt.keyRelease(KeyEvent.VK_P);
break;
case "q":
rbt.keyPress(KeyEvent.VK_Q);
rbt.keyRelease(KeyEvent.VK_Q);
break;
case "r":
rbt.keyPress(KeyEvent.VK_R);
rbt.keyRelease(KeyEvent.VK_R);
break;
case "s":
rbt.keyPress(KeyEvent.VK_S);
rbt.keyRelease(KeyEvent.VK_S);
break;
case "t":
rbt.keyPress(KeyEvent.VK_T);
rbt.keyRelease(KeyEvent.VK_T);
break;
case "u":
rbt.keyPress(KeyEvent.VK_U);
rbt.keyRelease(KeyEvent.VK_U);
break;
case "v":
rbt.keyPress(KeyEvent.VK_V);
rbt.keyRelease(KeyEvent.VK_V);
break;
case "w":
rbt.keyPress(KeyEvent.VK_W);
rbt.keyRelease(KeyEvent.VK_W);
break;
case "x":
rbt.keyPress(KeyEvent.VK_X);
rbt.keyRelease(KeyEvent.VK_X);
break;
case "y":
rbt.keyPress(KeyEvent.VK_Y);
rbt.keyRelease(KeyEvent.VK_Y);
break;
case "z":
rbt.keyPress(KeyEvent.VK_Z);
rbt.keyRelease(KeyEvent.VK_Z);
break;
case " ":
rbt.keyPress(KeyEvent.VK_SPACE);
rbt.keyRelease(KeyEvent.VK_SPACE);
break;
}
}
}
该静态方法根据str_mk判断是鼠标动作还是键盘动作,然后读取相关信息,对鼠标或键盘进行操作。