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判断是鼠标动作还是键盘动作,然后读取相关信息,对鼠标或键盘进行操作。