当前位置 主页 > 服务器问题 > Linux/apache问题 >
以上就完成了控制端。
接下来我们将构建被控制端:
被控制端需要使用robot来截图并发送,而且需要写一个方法来对接收到的InputEvent进行反应
首先是截图和发送:
public static void CapturePic() throws AWTException, IOException{ robot= new Robot(); Message msg = null; Toolkit tk = java.awt.Toolkit.getDefaultToolkit(); java.awt.Dimension dm =tk.getScreenSize(); java.awt.Robot robot = new java.awt.Robot(); for (int i = 0; i < 50; i++) { //截取指定大小的屏幕区域 Rectangle rec = new Rectangle(0, 0, (int) dm.getWidth(), (int) dm .getHeight()); BufferedImage bimage = robot.createScreenCapture(rec); //将图片保存到文件中 String filePath = "D:\\OUT\\screenshot"+i+".jpeg"; FileOutputStream fops =new FileOutputStream(filePath); javax.imageio.ImageIO.write(bimage, "jpeg", fops); fops.flush(); fops.close(); msg =new Message(filePath); System.out.println(msg.getFileName()); System.out.println("send"); OOS.writeObject(msg); OOS.flush(); } }
注意到这段代码中使用了D:\OUT\目录作为临时文件的存放地方,读者使用这个代码的时候需要自己设置临时文档的存放
然后实现robot对于接收到的InputEvent指令进行操作:
public void action() throws AWTException, ClassNotFoundException, IOException{ Robot robot= new Robot(); while(true){ InputEvent e =(InputEvent)OIS.readObject(); if(e!=null){ handleEvents(robot,e);} } } public static void handleEvents(Robot action,InputEvent event){ MouseEvent mevent = null ; //鼠标事件 MouseWheelEvent mwevent = null ;//鼠标滚动事件 KeyEvent kevent = null ; //键盘事件 int mousebuttonmask = -100; //鼠标按键 switch (event.getID()){ case MouseEvent.MOUSE_MOVED : //鼠标移动 mevent = ( MouseEvent )event ; action.mouseMove( mevent.getX() , mevent.getY() ); break ; case MouseEvent.MOUSE_PRESSED : //鼠标键按下 mevent = ( MouseEvent ) event; action.mouseMove( mevent.getX() , mevent.getY() ); mousebuttonmask = getMouseClick(mevent.getButton() ); if(mousebuttonmask != -100) action.mousePress(mousebuttonmask); break; case MouseEvent.MOUSE_RELEASED : //鼠标键松开 mevent = ( MouseEvent ) event; action.mouseMove( mevent.getX() , mevent.getY() ); mousebuttonmask = getMouseClick( mevent.getButton() );//取得鼠标按键 if(mousebuttonmask != -100) action.mouseRelease( mousebuttonmask ); break ; case MouseEvent.MOUSE_WHEEL : //鼠标滚动 mwevent = ( MouseWheelEvent ) event ; action.mouseWheel(mwevent.getWheelRotation()); break ; case MouseEvent.MOUSE_DRAGGED : //鼠标拖拽 mevent = ( MouseEvent ) event ; action.mouseMove( mevent.getX(), mevent.getY() ); break ; case KeyEvent.KEY_PRESSED : //按键 kevent = ( KeyEvent ) event; action.keyPress( kevent.getKeyCode() ); break ; case KeyEvent.KEY_RELEASED : //松键 kevent= ( KeyEvent ) event ; action.keyRelease( kevent.getKeyCode() ); break ; default: break ; } } private static int getMouseClick(int button) { //取得鼠标按键 if (button == MouseEvent.BUTTON1) //左键 ,中间键为BUTTON2 return InputEvent.BUTTON1_MASK; if (button == MouseEvent.BUTTON3) //右键 return InputEvent.BUTTON3_MASK; return -100; }