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

  • 相关阅读:
    Linux I/O调度
    集群心跳机制
    如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1)
    AVL树(平衡二叉树)
    二叉搜索树
    二叉树及树的遍历
    python实现基数排序
    python之迷宫BFS
    python之迷宫DFS
    python实现队列
  • 原文地址:https://www.cnblogs.com/mstk/p/3451384.html
Copyright © 2011-2022 走看看