zoukankan      html  css  js  c++  java
  • 基于TCP和多线程实现无线鼠标键盘-Robot

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

  • 相关阅读:
    javaweb学习总结(二十九)——EL表达式
    javaweb学习总结(二十)——JavaBean总结
    Js_闭包详解
    JDBC各种数据库连接URL关键代码
    Jquery Table 的基本操作
    浅谈HTTP中Get与Post的区别
    hibernate一级缓存和二级缓存的区别
    SQL删除重复数据只保留一条
    数据库事务的隔离级别
    完全卸载oracle11g
  • 原文地址:https://www.cnblogs.com/mstk/p/3451384.html
Copyright © 2011-2022 走看看