gpt4 book ai didi

java - 如何获取在 JVM 之外运行的任何 Linux/Windows 应用程序的屏幕截图

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:48 25 4
gpt4 key购买 nike

是否可以使用 Java 获取 Java 外部应用程序的屏幕截图,比如 VLC/Windows Media Player,将其存储为 Image 对象,然后将其显示在 JLabel 或类似性质的东西中?有人知道这是否可行吗?如果可行,有人知道如何做吗?

注意:我只需要了解如何获取屏幕截图并将其存储为某种形式的 Image 对象。之后我可以使用、操作它、显示它等等。

最佳答案

这是 Windows 的答案(不确定 alt+printScr 是否适用于 linux :P)

我想有一种方法可以实现这一点

<强>1。使用 Robot 类触发 alt+printScreen 命令(这会将 Activity 窗口捕获到剪贴板)

<强>2。读取剪贴板!

这是执行此操作的两段代码。我实际上并没有尝试过,但是我拼凑了一些东西。

Code to Fire commands to get active window on clipboard

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class ActiveWindowScreenShot
{
/**
* Main method
*
* @param args (not used)
*/
public static void main(String[] args)
{
Robot robot;

try {
robot = new Robot();
} catch (AWTException e) {
throw new IllegalArgumentException("No robot");
}

// Press Alt + PrintScreen
// (Windows shortcut to take a screen shot of the active window)
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_PRINTSCREEN);
robot.keyRelease(KeyEvent.VK_PRINTSCREEN);
robot.keyRelease(KeyEvent.VK_ALT);

System.out.println("Image copied.");
}
}

Code to read image on clipboard

// If an image is on the system clipboard, this method returns it;
// otherwise it returns null.
public static Image getClipboard() {
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);

try {
if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
Image text = (Image)t.getTransferData(DataFlavor.imageFlavor);
return text;
}
} catch (UnsupportedFlavorException e) {
} catch (IOException e) {
}
return null;
}

您可以根据需要管理控件!如果这对你有用,请告诉我。但这肯定是我要尝试的事情!

关于java - 如何获取在 JVM 之外运行的任何 Linux/Windows 应用程序的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com