如何用java控制你的电脑?
用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分钟了,是否需要休息一下?,然后你要点击“不需要”这个按钮。一个多小时的视频多的时候要点五六次,真想吐出一口老血,那为什么不用电脑自己点呢?于是就写了一个机器人,每次开始看的时候,运行这个程序就可以了。
package 青马在线robot;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class QinMaRobot {
private static Robot robot;
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
robot = new Robot();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
for(int i=0;i<6;i++){
robot.delay(5000);
robot.mouseMove(700, 480);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(20);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
for(int j=0;j<15;j++)//休息15分钟
robot.delay(60000);
}
}
}
嗯,这就舒服了,很简单的操作!
除了控制鼠标,还有什么呢?当然也可以控制电脑的键盘,调用robot.keyPress()和robot.keyRelease()方法,参数一般格式为:
KeyEvent.VK_name; name=按键的名称
举一个小例子,按下enter回车键:
- robot.keyPress(KeyEvent.VK_ENTER);
- robot.keyRelease(KeyEvent.VK_ENTER);
- robot.delay();
了解了这个我们可以干一些什么呢?什么都可以干了不是吗?你平时用电脑,就是两样东西,鼠标和键盘,现在这两样都可以机器化了。比如给你室友或者朋友来一个恶作剧,shutdow他的计算机
package java_robot实践;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class shutdown关机 {
private static Robot robot;
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
robot=new Robot();
} catch (AWTException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//首先切换到桌面,快捷键windows+D
robot.keyPress(KeyEvent.VK_WINDOWS);
robot.keyPress(KeyEvent.VK_D);
robot.delay(20);
robot.keyRelease(KeyEvent.VK_WINDOWS);
robot.keyRelease(KeyEvent.VK_D);
robot.delay(20);
//然后alt+f4
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_F4);
robot.delay(20);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_F4);
robot.delay(50);
//最后按下enter键
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(20);
robot.keyRelease(KeyEvent.VK_ENTER);
}
}
你可以尽情的想象可以用来做什么,只要你平时能用电脑操作的,机器人可以帮你做到。只是实现的过程有点小麻烦而已。但是,嘿,MAN,JUST DO IT!
如何用java控制你的电脑?的更多相关文章
- 如何用java实现使用电子邮件控制你的电脑
上两天看到一篇文章,用python实现电子邮件控制电脑的有趣的小程序 python 实现微信控制电脑 python版的视频教程 但是苦于自己没接触过python于是想到能不能用java实现,于 ...
- Android(Java)控制GPIO的方法及耗时分析
前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO.实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限.本文重点介绍 ...
- 如何用Java编写一段代码引发内存泄露
本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码. Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有, ...
- 如何用 async 控制流程
来自: http://larry850806.github.io/2016/05/31/async/ [Javascript] 如何用 async 控制流程 (一) 31 May 2016 async ...
- java程序怎么在一个电脑上只启动一次,只开一个进程
目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定 ...
- Spring进阶—如何用Java代码实现邮件发送(一)
相关文章: <Spring进阶—如何用Java代码实现邮件发送(二)> 在一些项目里面如进销存系统,对一些库存不足发出预警提示消息,招聘网站注册用户验证email地址等都需要用到邮件发送技 ...
- Java.控制层.响应工具类.
Java.控制层.响应工具类. package cn.com.spdbccc.cds.index.web.base; public class ApiResponse { private int co ...
- java:如何用代码控制H2 Database启动
1.纯手动start/stop package com.cnblogs.yjmyzz.h2; import java.sql.Connection; import java.sql.DriverMan ...
- Java 控制反转和依赖注入模式【翻译】【整理】
Inversion of Control Containers and the Dependency Injection pattern --Martin Fowler 本文内容 Component ...
随机推荐
- NPOI 修改指定单元格字体颜色
//创建一个字体颜色 IFont font = hssfworkbook.CreateFont(); //红色 font.Color = HSSFColor.Red.Index; //样式 ICell ...
- H5混合开发问题总结
1.This application is modifying the autolayout engine from a background thread, which can lead to en ...
- maven_SSM集成的demo
一.集成spring 二.集成springMVC 三.集成mybatis 1. pom.xml <?xml version="1.0" encoding="UTF- ...
- 多选ui实现单选效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JS闭包解析
三点注意事项 JS作用域传送门 JS没有块级作用域,只有全局作用域和局部作用域(函数作用域). JS中的作用域链,内部的作用域可以访问到外部作用域中的变量和方法,而外部作用域不能访问内部作用域的变量和 ...
- #Java学习之路——基础阶段(第九篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- [Swift]LeetCode795. 区间子数组个数 | Number of Subarrays with Bounded Maximum
We are given an array A of positive integers, and two positive integers L and R (L <= R). Return ...
- java 网络通信传输层协议——UDP和TCP
本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...
- 前端(各种demo)一:css实现三角形,css实现梯形,pop弹层,css伪类before,after使用,svg使用(持续更新中)
各种demo: 1.css实现正方形 思路:width为0:height为0:使用boder-width为正方形的边长的一半,不占任何字节:border-style为固体:border-color为正 ...
- Spring AOP实现统一日志输出
目的: 统一日志输出格式 思路: 1.针对不同的调用场景定义不同的注解,目前想的是接口层和服务层. 2.我设想的接口层和服务层的区别在于: (1)接口层可以打印客户端IP,而服务层不需要 (2)接口层 ...