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

基于TCP和多线程实现无线鼠标键盘-Robot的更多相关文章

  1. 基于TCP和多线程实现无线鼠标键盘-GestureDetector

    为了实现无线鼠标,需要识别出用户在手机屏幕上的滑动动作,这就需要用到GestureDetector类. 首先是activity_main.xml: <LinearLayout xmlns:and ...

  2. 基于TCP和多线程实现无线鼠标键盘-Socket(1)

    把手机作为移动鼠标.键盘使用非常方便,本文将实现这一功能.该应用分为两部分:Windows服务端和Android客户端. 本文源代码的下载地址:http://download.csdn.net/det ...

  3. 基于TCP和多线程实现无线鼠标键盘-InputMethodManager

    为了实现无线键盘的功能,使用了InputMethodManager弹出软键盘. // 弹出软键盘 public void pop_keyboard(){ imm = (InputMethodManag ...

  4. 基于TCP和多线程实现无线鼠标键盘-Socket(2)

    在(1)中,实现了Windows服务端与Android客户端的连接,本节将实现在Windows服务端与Android客户端之间传递数据. Android客户端的发送线程SendThread.java代 ...

  5. 基于tcp和多线程的多人聊天室-C语言

    之前在学习关于网络tcp和多线程的编程,学了知识以后不用一下总绝对心虚,于是就编写了一个基于tcp和多线程的多人聊天室. 具体的实现过程: 服务器端:绑定socket对象->设置监听数-> ...

  6. Java Socket实现基于TCP和UDP多线程通信

    一.通过Socket实现TCP编程 1.1 TCP编程 TCP协议是面向连接,可靠的,有序的,以字节流的方式发送数据.基于TCP协议实现网络通信的类有客户端的Socket类和服务器端的ServerSo ...

  7. JAVA基础知识之网络编程——-基于TCP通信的简单聊天室

    下面将基于TCP协议用JAVA写一个非常简单的聊天室程序, 聊天室具有以下功能, 在服务器端,可以接受客户端注册(用户名),可以显示注册成功的账户 在客户端,可以注册一个账号,并用这个账号发送信息 发 ...

  8. (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制

    1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...

  9. Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

随机推荐

  1. navigationController pop的几种方法

    一,popViewControllerAnimated [self.navigationController popViewControllerAnimated:YES]; 二,popToRootVi ...

  2. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  3. 缓存篇~第七回 Redis实现基于方法签名的数据集缓存(可控更新,分布式数据缓存)

    返回目录 本篇文章可以说是第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存(可控更新,WEB端数据缓存)的续篇,事实上,有 ...

  4. excel表格中如何将内容粘贴到筛选后的可见单元格[转]

    默认情况下,筛选后excel表格进行复制粘贴,会贴到隐藏的表格. 可以添加两个辅助列来完成操作:1.在筛选前在表格右边添加"辅助1"列,在第二行输入1,按Ctrl+鼠标左键往下拉到 ...

  5. 关于STM32的外部引脚中断的问题

    今天想用自己以前的比较干净的工程模板做一个东西,,,,,,,在添加上引脚中断的时候,,突然想知道自己配置的中断优先级是否正确执行,,,,, 以前刚学习32的时候测试过是可以的,,不过今天发现了一个大问 ...

  6. css 弹出层-透明层

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. String详解

    在开发中,我们都会频繁的使用String类,掌握String的实现和常用方法是必不可少的,当然,我们还需要了解它的内部实现. 一. String的实现 在Java中,采用了一个char数组实现Stri ...

  8. 安卓中的数据存储方式以及ContentProvider的简单介绍

    1.介绍android的数据存储方式 File存储 sharedPrefrence存储方式 conmtentprovider sqlitedatabase 网络存储   2.请介绍下ContentPr ...

  9. Hadoop官方文档翻译——HDFS Architecture 2.7.3

    HDFS Architecture HDFS Architecture(HDFS 架构) Introduction(简介) Assumptions and Goals(假设和目标) Hardware ...

  10. kqueue用法简介

    1.什么是kqueue和IO复用 kueue是在UNIX上比较高效的IO复用技术. 所谓的IO复用,就是同时等待多个文件描述符就绪,以系统调用的形式提供.如果所有文件描述符都没有就绪的话,该系统调用阻 ...