package thread; import java.awt.MouseInfo; import java.awt.Point; import java.awt.Robot; import java.awt.event.InputEvent; import java.io.DataInputStream; import java.io.IOException; import java.net.Socket; import util.Constant; /** * 控制鼠标线程 * * @author 赵庆洋 * */ public class MouseThread extends Thread { private Socket socket; private float nowX, nowY; private String moveXStr, moveYStr; private float moveX, moveY; private DataInputStream in; public MouseThread(Socket socket) { this.socket = socket; } @Override public void run() { try { // 读取客户端传过来信息的dataInputStream in = new DataInputStream(socket.getInputStream()); // 读取来自客户端的信息 String accept = in.readUTF(); System.out.println(accept); Robot robot = new Robot(); // 如果发来的消息是获取盘符 if (accept.contains("<")) { // 截取x方向的移动距离 moveXStr = accept.substring(accept.indexOf("<") + 1, accept.indexOf(",")); // 截取y方向的移动距离 moveYStr = accept.substring(accept.indexOf(",") + 1, accept.indexOf(">")); moveX = Float.parseFloat(moveXStr); moveY = Float.parseFloat(moveYStr); Point point = MouseInfo.getPointerInfo().getLocation(); nowX = point.x; nowY = point.y; robot.mouseMove((int) (nowX + moveX), (int) (nowY + moveY)); } else if (accept.equals(Constant.MOUSE_LEFT)) { // 左键按下 robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); } else if (accept.equals(Constant.MOUSE_RIGHT)) { // 右键按下 robot.mousePress(InputEvent.BUTTON3_MASK); robot.mouseRelease(InputEvent.BUTTON3_MASK); } } catch (Exception e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }