用java控制你的电脑

java,是一门强大的语言,强大的地方在于有很多类,我们可以直接的使用。而java.awt.Robot就很有意思了,顾名思义robot机器人,怎样一个机器法,如:控制鼠标方法:

鼠标的点击:void mousePress(int button)

鼠标的释放:void mouseRelease(int buttons)

鼠标的移动:void mouseMove(int x,int y)

鼠标滚动滑轮: void mouseWheel(int wheelAmt)

由于程序执行语句的速度很快,有时候你点的地方来不及反应,所以要用到,void delay(int ms)方法,睡眠指定的时间(类似于线程中sleep)给个例子,鼠标点击一下,

robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(20);//休眠20毫秒,再释放
robot.mouseRelease(InputEvent.BUTTON1_MASK);

学到了这个功能马上就可以实践一下了,最近学校催刷青马在线的视屏,嗯,刷那个视屏吧!巨难受,每隔十五分钟便停止了,询问到:您已经看了15分钟了,是否需要休息一下?,然后你要点击“不需要”这个按钮。一个多小时的视频多的时候要点五六次,真想吐出一口老血,那为什么不用电脑自己点呢?于是就写了一个机器人,每次开始看的时候,运行这个程序就可以了。

  1. package 青马在线robot;
  2. import java.awt.Robot;
  3. import java.awt.event.InputEvent;
  4. public class QinMaRobot {
  5. private static Robot robot;
  6. public static void main(String[] args) {
  7. // TODO 自动生成的方法存根
  8. try {
  9. robot = new Robot();
  10. } catch (Exception e) {
  11. // TODO: handle exception
  12. e.printStackTrace();
  13. }
  14. for(int i=0;i<6;i++){
  15. robot.delay(5000);
  16. robot.mouseMove(700, 480);
  17. robot.mousePress(InputEvent.BUTTON1_MASK);
  18. robot.delay(20);
  19. robot.mouseRelease(InputEvent.BUTTON1_MASK);
  20. for(int j=0;j<15;j++)//休息15分钟
  21. robot.delay(60000);
  22. }
  23. }
  24. }

嗯,这就舒服了,很简单的操作!

除了控制鼠标,还有什么呢?当然也可以控制电脑的键盘,调用robot.keyPress()和robot.keyRelease()方法,参数一般格式为:

KeyEvent.VK_name; name=按键的名称

举一个小例子,按下enter回车键:

  1. robot.keyPress(KeyEvent.VK_ENTER);
  2. robot.keyRelease(KeyEvent.VK_ENTER);
  3. robot.delay();

了解了这个我们可以干一些什么呢?什么都可以干了不是吗?你平时用电脑,就是两样东西,鼠标和键盘,现在这两样都可以机器化了。比如给你室友或者朋友来一个恶作剧,shutdow他的计算机

  1. package java_robot实践;
  2. import java.awt.AWTException;
  3. import java.awt.Robot;
  4. import java.awt.event.KeyEvent;
  5. public class shutdown关机 {
  6. private static Robot robot;
  7. public static void main(String[] args) {
  8. // TODO 自动生成的方法存根
  9. try {
  10. robot=new Robot();
  11. } catch (AWTException e) {
  12. // TODO 自动生成的 catch 块
  13. e.printStackTrace();
  14. }
  15. //首先切换到桌面,快捷键windows+D
  16. robot.keyPress(KeyEvent.VK_WINDOWS);
  17. robot.keyPress(KeyEvent.VK_D);
  18. robot.delay(20);
  19. robot.keyRelease(KeyEvent.VK_WINDOWS);
  20. robot.keyRelease(KeyEvent.VK_D);
  21. robot.delay(20);
  22. //然后alt+f4
  23. robot.keyPress(KeyEvent.VK_ALT);
  24. robot.keyPress(KeyEvent.VK_F4);
  25. robot.delay(20);
  26. robot.keyRelease(KeyEvent.VK_ALT);
  27. robot.keyRelease(KeyEvent.VK_F4);
  28. robot.delay(50);
  29. //最后按下enter键
  30. robot.keyPress(KeyEvent.VK_ENTER);
  31. robot.delay(20);
  32. robot.keyRelease(KeyEvent.VK_ENTER);
  33. }
  34. }

你可以尽情的想象可以用来做什么,只要你平时能用电脑操作的,机器人可以帮你做到。只是实现的过程有点小麻烦而已。但是,嘿,MAN,JUST DO IT!

如何用java控制你的电脑?的更多相关文章

  1. 如何用java实现使用电子邮件控制你的电脑

    上两天看到一篇文章,用python实现电子邮件控制电脑的有趣的小程序 python 实现微信控制电脑     python版的视频教程 但是苦于自己没接触过python于是想到能不能用java实现,于 ...

  2. Android(Java)控制GPIO的方法及耗时分析

    前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO.实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限.本文重点介绍 ...

  3. 如何用Java编写一段代码引发内存泄露

    本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码. Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有, ...

  4. 如何用 async 控制流程

    来自: http://larry850806.github.io/2016/05/31/async/ [Javascript] 如何用 async 控制流程 (一) 31 May 2016 async ...

  5. java程序怎么在一个电脑上只启动一次,只开一个进程

    目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定 ...

  6. Spring进阶—如何用Java代码实现邮件发送(一)

    相关文章: <Spring进阶—如何用Java代码实现邮件发送(二)> 在一些项目里面如进销存系统,对一些库存不足发出预警提示消息,招聘网站注册用户验证email地址等都需要用到邮件发送技 ...

  7. Java.控制层.响应工具类.

    Java.控制层.响应工具类. package cn.com.spdbccc.cds.index.web.base; public class ApiResponse { private int co ...

  8. java:如何用代码控制H2 Database启动

    1.纯手动start/stop package com.cnblogs.yjmyzz.h2; import java.sql.Connection; import java.sql.DriverMan ...

  9. Java 控制反转和依赖注入模式【翻译】【整理】

    Inversion of Control Containers and the Dependency Injection pattern --Martin Fowler 本文内容 Component ...

随机推荐

  1. Object-C 编程问题汇总

    Object-C 编程问题汇总 Cocopods 安装时遇见的问题: error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, ...

  2. Java Bloom filter几种实现比较

    英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter. 源代码在github上.依照性能测试结 ...

  3. xss挖掘初上手

    本文主要总结了xss可能出现的场景.偏向于案例,最后分享一哈简单的绕过和比较好用的标签. 1.搜索框 首先看能否闭合前面的标签. 如输入111”><svg/onload=alert(1)& ...

  4. SDL 开发实战(一):SDL介绍及开发环境配置

    一.什么是SDL? SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. SDL使用C语言写成 ...

  5. 2种不同方式实现背景图里加入文字的简单CSS样式

    如果让你实现下图的样式(图片里面插入文字),你会怎么做呢? 我总结了2种方式 ①:用 img src属性直接引入图片 + 定位 ②:用背景图且不使用定位 第一种: HTML <div class ...

  6. [Swift]LeetCode1021. 删除最外层的括号 | Remove Outermost Parentheses

    A valid parentheses string is either empty (""), "(" + A + ")", or A + ...

  7. PHP算法之冒泡排序

    //冒泡排序 //①思路,先比较出第一次,找一个最大的值,排到最后; //②重复count遍之后,就能得到排序; //③优化,每一次循环之后不需要再次全部重复; $array = [11,5,4,58 ...

  8. Java第三次上机随笔

    就记录一下新的收获吧~ 1.定点数(BigDecimal) 先区分一下浮点数和定点数: 浮点数(float/double):小数点可以任意浮动,称为浮点表示法 定点数(BigDecimal):一种数约 ...

  9. TDD in .NET Core - 简介

    本文很多内容来自选自TDD实例一书. 预备知识 最好有一些预备知识,例如xUnit,Moq,如何编写易于测试的代码,这些内容我都写了文章:https://www.cnblogs.com/cgzl/p/ ...

  10. A10映射方法

    #创建服务 slb server rs_10.90.6.95 10.90.6.95 port 5001 tcp slb server rs_10.90.6.96 10.90.6.96 port 500 ...