MacOS Big Sur 失败后 - java.awt.robot.createScreenCapture 现在只捕获桌面

问题描述

安装 Big Sur 更新后的 MacOS。非常感谢您对此的任何帮助。

之前:

调用 java.awt.robot.createScreenCapture

结果:

当前可见的截图

之后:

调用 java.awt.robot.createScreenCapture

结果:

桌面截图

测试这个的简单代码

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

public class ScreenCaptureTest {

    public static void main(String[] args) throws IOException,AWTException {
        Robot robot = new Robot();
        BufferedImage image = robot.createScreenCapture(new Rectangle(0,800,500));
        File file = new File("screenCapture.png"); 
        ImageIO.write(image,"png",file);
        // Captures part of desktop,not current windows in focus :(
    }
}

解决方法

有一个解决方法可以满足我的需求。截取当前焦点(而不是桌面)的屏幕截图。

可能会帮助别人。

        Robot robot = new Robot();
        robot.delay(200);
        robot.keyPress(KeyEvent.VK_META);
        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.keyPress(KeyEvent.VK_3);
        robot.keyRelease(KeyEvent.VK_3);
        robot.keyRelease(KeyEvent.VK_SHIFT);
        robot.keyRelease(KeyEvent.VK_META);
        robot.delay(200);
        renameCaptureAs(filename);