我有一个在线部署的应用程序,它只在Windows操作系统上按预期工作.我试图使应用程序也将工作在Mac OS上,以及但问题是,所有最大化的应用程序,如谷歌或IDE本身不包括在捕获,它只是捕获的背景.(请参阅下面代码中的screenshot)

我希望打开或最大化的应用程序被包括在屏幕截图中,但所有这些都不能使用下面的代码工作.

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

public class ScreenCapture extends Application {

    @Override
    public void start(Stage primaryStage) {
        captureScreenshot();
    }

    private void captureScreenshot() {
        List<Screen> screens = Screen.getScreens();
        for (int i = 0; i < screens.size(); i++) {
            Screen screen = screens.get(i);
            Rectangle2D bounds = screen.getBounds();
            Robot robot = new Robot();
            WritableImage screenshot = robot.getScreenCapture(null, bounds);
            BufferedImage image = javafx.embed.swing.SwingFXUtils.fromFXImage(screenshot, null);
            try {
                ImageIO.write(image, "png", new File("screenshot" + i + ".png"));
            } catch (IOException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

我试着在谷歌、YouTube甚至聊天网站上寻找答案,但我找不到任何解决方案.

推荐答案

从MacOS 10.15 Catalina开始,你需要privacy and security permission才能在Mac上捕捉屏幕.如果一款应用程序不被允许录制屏幕,它将收到桌面.

通常,第一次使用屏幕录制API时会向用户呈现一个对话框,但我不知道这在JavaFX中是如何实现的--可能是请求被静默拒绝.在这种情况下-或者如果用户拒绝了请求-您必须将他们定向到performing the appropriate action.请注意,在录制权限生效之前,您的应用程序必须重新启动.

Java相关问答推荐

try 使用Java 9或更高版本对特殊对象图进行解析时出现NullPointerException

Java中不同包中的类之间的配置共享

为什么在枚举中分支预测比函数调用快?

如何让JFileChooser(DIRECTORIES_ONLY)从FolderName中的空白开始?

Exe4j创建的应用程序无法再固定在任务栏Windows 11上

在bash中将数组作为Java程序的参数传递

SpringBoot+Java 17@Valid未验证POJO

为什么我的在一个范围内寻找素数的程序不能像S所期望的那样工作

Spark忽略Iceberg Nessie目录

有没有办法让扩展变得多态?

如何修复PDF重建过程中的文本定位

多重延迟签名

MimeMessage emlMessage=new MimeMessage(Session,emlInputStream);抛出InvocationTargetException

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

Regex以查找不包含捕获组的行

如果第一位数字和最后一位数字相差超过一位,您将如何获得随机数?

每次我需要时创建和关闭数据库连接会有什么效果吗?

在打开搜索结果时,如何让Eclipse打开整个文件?

Java KeyListener不工作或被添加

根据应用程序 Select 的语言检索数据