Java如何读取其他窗口上的文字,请给一下示例代码
时间: 2023-06-02 18:03:58 浏览: 82
以下是一个示例代码,可以通过Java的Robot类和Clipboard类读取其他窗口的文本:
```java
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;
public class ReadWindowTxt {
public static void main(String[] args) throws Exception {
// 设定需要读取的窗口名称
String windowName = "Notepad";
// 获取窗口句柄
HWND hwnd = User32.INSTANCE.FindWindow(null, windowName);
// 获取窗口矩形
RECT rect = new RECT();
User32.INSTANCE.GetWindowRect(hwnd, rect);
// 计算出窗口的宽度和高度
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
// 创建一个Robot对象
Robot robot = new Robot();
// 获得剪贴板对象
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// 移动鼠标到窗口中心位置
robot.mouseMove(rect.left + width / 2, rect.top + height / 2);
// 模拟键盘操作,将窗口中的文本全选并复制
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_CONTROL);
// 等待剪贴板准备好
Thread.sleep(500);
// 从剪贴板中获取文本
String text = (String) clipboard.getData(DataFlavor.stringFlavor);
// 打印读取到的文本
System.out.println(text);
}
}
```
注意,这里只是一个例子,具体实现可能因为窗口不同、编码不同等原因而有所差异,请结合实际情况进行调整。