利用Robot类实现自动操作,实现效果是运行之后鼠标自动定位到整个屏幕坐标系的(635,454)位置,输入wangtianze

 package com.wtz.util;

 import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; /**
* @author wangtianze QQ:864620012
* @date 2017年4月16日 上午1:20:32
* <p>description:Robot测试类,实现效果是运行之后鼠标自动定位到整个屏幕坐标系的(635,454)位置,输入wangtianze</p>
*/
public class RobotTest {
public static void main(String[] args){
try {
Robot robot = new Robot();
//鼠标移动到坐标(635,454)
RobotTest.clickMouse(robot, 635, 454, 500); int[] keys = {
KeyEvent.VK_W,KeyEvent.VK_A,
KeyEvent.VK_N,KeyEvent.VK_G,
KeyEvent.VK_T,KeyEvent.VK_I,
KeyEvent.VK_A,KeyEvent.VK_N,
KeyEvent.VK_Z,KeyEvent.VK_E};
robot.delay(500);
RobotTest.pressKey(robot,keys,500);
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void pressKey(Robot robot,int[] keys,int delay){
for(int i=0;i<keys.length;i++){
robot.keyPress(keys[i]);
robot.keyRelease(keys[i]);
robot.delay(500);
}
//处理完需要延迟
robot.delay(delay);
} public static void clickMouse(Robot robot,int x,int y,int delay){
robot.mouseMove(x, y);
robot.delay(500);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(delay);
}
}

利用Robot类实现监控屏幕,实现效果是运行后每隔50微秒获取当前屏幕图像,显示到JFrame内

 package com.wtz.util;

 import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage; import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel; /**
* @author wangtianze QQ:864620012
* @date 2017年4月16日 下午4:43:11
* <p>description:Robot实现监控屏幕,实现效果是每隔50微秒获取当前屏幕图像,显示到JFrame内</p>
*/
public class RobotScreenTest {
public static void main(String[] args){
try {
Robot robot = new Robot();
JFrame jframe = new JFrame();
//设置标题
jframe.setTitle("wangtianze监控屏幕工具");
JLabel label = new JLabel();
jframe.add(label);
jframe.setSize(800,600);
//设置可见
jframe.setVisible(true);
//设置置顶
jframe.setAlwaysOnTop(true);
//控制台退出模式
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//获取屏幕大小
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dm = toolkit.getScreenSize();
while(true){
//一个矩形面板
Rectangle rec = new Rectangle(0, 0, (int)dm.getWidth(), (int)dm.getHeight());
//按照矩形截取图片到缓冲流
BufferedImage img = robot.createScreenCapture(rec);
//缩放图片
BufferedImage newImg = RobotScreenTest.resize(img, jframe.getWidth(), jframe.getHeight());
label.setIcon(new ImageIcon(newImg));
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static BufferedImage resize(BufferedImage img, int newW, int newH){
int w = img.getWidth();
int h = img.getHeight();
//创建一个缩放后的图片流
BufferedImage newImg = new BufferedImage(newW,newH,img.getType());
Graphics2D g = newImg.createGraphics();
//设置模式
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
//按比例缩放
g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
g.dispose();
return newImg;
}
}

Java关于Robot类的使用的更多相关文章

  1. Java关于Robot类的使用以及远程桌面的实现

    利用Robot实现效果是运行之后鼠标自动定位到整个屏幕坐标系的(635,454)位置,输入wangtianze package com.wtz.util; import java.awt.AWTExc ...

  2. java使用Robot类在eclipse上实现自动编写代码

    运行时,把输入法关掉,切换成系统自带的输入法即可: 第二个类是自定义的键值Map集合,主要是为了方便输入字符串,有需要的可以自行添加: 主要的代码如下,会创建一个名称为Automaton.java的类 ...

  3. java学习笔记——基于Robot类的屏幕分享

    直接上代码,具体看注释: package robot; import java.awt.AWTException; import java.awt.Dimension; import java.awt ...

  4. Mac环境下用Java(Sikuli+Robot)实现页游自动化

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ Sikulix(以前叫Sikuli)在Mac电脑的环境配置步骤如下: 1.从官网上下载Sikuli ...

  5. 使用Robot类模拟鼠标、键盘事件

    Robot类用于模拟鼠标.键盘事件,生成本机系统输入事件.Robot 的主要用于自动化.自运行的程序和其他需要自动控制鼠标和键盘的程序 相当于实际操作的效果,不仅仅只是生成对应的鼠标.键盘事件.比如R ...

  6. Java使用Robot完成QQ轰炸机

    效果 网上吵架吵不过别人怎么办?女朋友让你从1数到10000怎么办?想恶搞朋友怎么办?QQ轰炸机你值得拥有!(注:为了更好的学习编程,敲的练手项目,仅作学习使用) 自定义发送内容,自定义发送条数,&q ...

  7. java自定义注解类

    一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import ...

  8. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

  9. java中Inetaddress类

    InetAddress类 InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名. 你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解. Ine ...

随机推荐

  1. input全选与单选(把相应的value放入隐藏域去)

    框架是Jquery 需求是: 页面上有很多复选框,1.当我选择一项复选框时候 把对应的值放入到隐藏域去 2.当我反选的时候 把隐藏域对应的值删掉.3.当我全选的时候 页面上所有的选择框的值一起放到隐藏 ...

  2. Docker学习3-CentOS安装Docker

    CentOS安装:Docker-ce ( Docker Community Edition ) 第一步:$ sudo yum install -y yum-utils device-mapper-pe ...

  3. JAVA框架 Mybaits

     注意:我们在resultType中,对于selectlist方法也是projo类.resultType参数的含义是list的泛型的类型. 一:jar包下载: https://github.com/m ...

  4. C++之静态的变量和静态函数

    到目前为止,我们设计的类中所有的成员变量和成员函数都是属于对象的,如我们在前面定义的book类,利用book类声明两个对象Alice和Harry,这两个对象均拥有各自的price和title成员变量, ...

  5. 检测QQ在线状态脚本(20141022测试成功)

    import time,datetime import urllib2 def chk_qq(qqnum): chkurl = 'http://wpa.paipai.com/pa?p=1:'+`qqn ...

  6. 将EF项目从dbfirst转化为codefirst

    一个脚本服务的项目,之前是先设计的数据库表,采用EF的dbfirst做的映射.项目完成后,出现迁移瓶颈. 1.dbfirst项目,如果数据库表结构做了调整,需要重新映射 2.当出现表结构一致,但数据库 ...

  7. HDFS--大数据应用的基石

    近些年,由于智能手机的迅速普及推动移动互联网技术的蓬勃发展,全球数据呈现爆发式的增长.2018年5月企鹅号的统计结果:互联网每天新增的数据量达2.5*10^18字节,而全球90%的数据都是在过去的两年 ...

  8. Vivado中xilinx_courdic IP核(求exp指数函数)使用

    由于Verilog/Vhdl没有计算exp指数函数的库函数,所以在开发过程中可利用cordic IP核做exp函数即e^x值: 但前提要保证输入范围在(-pi/4—pi/4) 在cordic核中e^x ...

  9. 2017-2018 Exp4 恶意代码分析 20155214曾士轩

    目录 Exp4 恶意代码分析 实验内容 使用schtasks指令监控系统运行 主要思路 知识点 启发 Exp4 恶意代码分析 本次实验操使用Windows下的schtasks,sysmon,Proce ...

  10. 20155238 2016-2017-2 《JAVA程序设计》第十周学习总结

    教材学习内容总结 # Java计算机网络基础 计算机网络 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使 ...