前言
上篇文章《java鼠标控制 robot机器人获取鼠标的屏幕坐标工具类》
在桌面浏览器快捷方式上,右键属性,选择后目标的内容复制粘贴到下面代码appPath中。
代码
核心代码如下,在idea编辑器里,右键run运行
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
/**
* Java实现在QQ上输入文字并发送
* @author tarzan LIU
*
*/
public class TestDeskTop {
static Desktop deskApp = Desktop.getDesktop();
static Robot robot;
static {
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
public static void main(String [] args) throws AWTException{
openApp("C:\\Users\\liuya\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");
//浏览器最大化快捷键 alt+space+x
keyPressWithAlt(robot,KeyEvent.VK_SPACE,KeyEvent.VK_X);
//地址栏输入网址
keyPressString(robot,"baidu.com");
//回车
keyPress(robot, KeyEvent.VK_ENTER);
}
//打开app
public static void openApp(String appPath) {
//判断当前系统释放支持Desktop提供的接口
if (Desktop.isDesktopSupported()) {
try {
deskApp.open(new File(appPath));
} catch (IOException e) {
e.printStackTrace();
}
}
//延迟1秒
robot.delay(1000);
}
//Alt组合键
public static void keyPressWithAlt(Robot r, int key1,int key2) {
r.keyPress(KeyEvent.VK_ALT);
r.keyPress(key1);
r.keyPress(key2);
r.keyRelease(key2);
r.keyRelease(key1);
r.keyRelease(KeyEvent.VK_ALT);
r.delay(100);
}
//输入字符串
public static void keyPressString(Robot r, String str) {
//获取剪切板
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
//将传入字符串封装下
Transferable tText = new StringSelection(str);
//将字符串放入剪切板
clip.setContents(tText, null);
//按下Ctrl+V实现粘贴文本
keyPressWithCtrl(r, KeyEvent.VK_V);
r.delay(100);
}
//Ctrl组合键
public static void keyPressWithCtrl(Robot r, int key) {
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(key);
r.keyRelease(key);
r.keyRelease(KeyEvent.VK_CONTROL);
r.delay(100);
}
//实现按一次某个按键
public static void keyPress(Robot r, int key) {
//按下键
r.keyPress(key);
//释放键
r.keyRelease(key);
r.delay(100);
}
}
运行示意图
效果图
相关知识
java.awt.Robot是Java提供的一个类,用于模拟用户在图形界面上的鼠标和键盘操作。它可以自动化执行各种用户交互操作,如移动鼠标、点击按钮、输入文本等。在接下来的3000字内,我将为您详细解释java.awt.Robot技术的主要概念、用途和基本用法。
java.awt.Robot的主要概念:
- Robot类:Robot类是java.awt包中的一个核心类,它提供了一组方法来模拟鼠标和键盘事件。通过创建Robot对象,可以控制和模拟用户的输入操作。
- 图形界面组件:Robot类可以与其他AWT或Swing组件进行交互。它可以定位和操作图形界面上的按钮、文本框、滚动条等组件。
java.awt.Robot的主要用途:
- 自动化测试:Robot类可以用于编写自动化测试脚本,对图形界面应用程序进行自动化测试。通过模拟用户的操作,可以检查应用程序是否按预期运行,并捕获测量到的结果。
- UI脚本录制和回放:通过使用Robot类记录用户在图形界面上的交互操作,可以生成UI脚本。这些脚本可以重放,以便再次执行相同的操作,从而简化重复的任务。
- 辅助工具和自动化任务:Robot类可以用于创建辅助工具或执行自动化任务。例如,可以编写一个自动截图工具,让Robot类模拟用户按下截图快捷键,并将屏幕内容保存为图片。
基本使用方法:
1.创建Robot对象:首先,需要通过调用new Robot()
构造函数创建一个Robot对象。
Robot robot = new Robot();
2.模拟鼠标操作:通过Robot对象的方法,可以模拟鼠标的各种操作,如移动、点击、拖拽等。
robot.mouseMove(x, y); // 将鼠标移动到指定坐标(x, y)
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // 按下鼠标左键
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // 松开鼠标左键
3.模拟键盘操作:通过Robot对象的方法,可以模拟键盘的各种操作,如按键、释放、输入文本等。
robot.keyPress(KeyEvent.VK_ENTER); // 按下Enter键
robot.keyRelease(KeyEvent.VK_ENTER); // 松开Enter键
robot.keyPress(KeyEvent.VK_SHIFT); // 按下Shift键
robot.keyPress(KeyEvent.VK_A); // 按下A键
robot.keyRelease(KeyEvent.VK_A); // 松开A键
robot.keyRelease(KeyEvent.VK_SHIFT); // 松开Shift键
4.获取屏幕截图:通过Robot对象的方法,可以捕获屏幕上指定区域的截图,并将其保存为图片文件。
Rectangle screenRect = new Rectangle(0, 0, screenWidth, screenHeight);
BufferedImage screenshot = robot.createScreenCapture(screenRect);
ImageIO.write(screenshot, "png", new File("screenshot.png"));
总结: java.awt.Robot是Java提供的一个类,用于模拟用户在图形界面上的鼠标和键盘操作。它可以自动化执行各种用户交互操作,用于自动化测试、UI脚本录制回放、辅助工具等应用场景。通过创建Robot对象并调用相应的方法,可以模拟鼠标和键盘事件,实现对图形界面的控制。请注意,使用Robot类需要小心谨慎,确保不会滥用它的能力或违反安全性要求。此外,还可以进一步了解Robot类的其他方法和功能,以适应更复杂的需求和场景。