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

  • 相关阅读:
    漫谈设计模式(三):桥接(Bridge)模式 —— 将类功能、结构两层次分离
    深入理解spring中的AOP原理 —— 实现MethodInterceptor接口,自已动手写一个AOP
    Python面向对象之什么是类(1)
    Python常用模块之logging模块
    Python常用模块之xml模块
    Python常用模块之hashlib
    linux基础命令(一)
    DateTime字段控件值显示短格式的做法
    .net中除去IList中的多余项
    jquery点击按钮显示和隐藏DIv
  • 原文地址:https://www.cnblogs.com/mstk/p/3451384.html
Copyright © 2020-2023  润新知