在Windows上使用java在锁屏期间进行屏幕截图

问题描述 投票:0回答:1

目的是只要java应用程序正在运行,无论屏幕锁定如何,都可以进行屏幕捕获。我在交流中遇到了几个类似的问题,但所有这些问题都与使用 Selenium 或某些 Windows 特定代码有关。

代码(见下文)使用

java.awt.Robot
进行循环屏幕捕获。文件保存为 png。

问题是 当用户锁定计算机时,截取的屏幕截图是锁定屏幕,而不是电脑解锁时底层屏幕的样子。

如何解决这个问题?

import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class Capture{
    public static void main(String[] args) throws Exception {
        GraphicsDevice screen = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        DisplayMode dm = screen.getDisplayMode();
        int[] size = {dm.getWidth(), dm.getHeight()};
        Rectangle rect = new Rectangle(size[0], size[1]);
        String path = "D:/img.png";
        Robot rob = new Robot(screen);
        File outfile = new File(path);

        while (true) {
            BufferedImage img = rob.createScreenCapture(rect);
            ImageIO.write(img, "png", outfile);
            Thread.sleep(1000);
        }

    }

}

环境
Windows 10
JDK 12

java windows screen-capture
1个回答
0
投票

我知道这是一个老问题,但我也遇到了同样的问题,因为在 Jenkins 节点上运行的测试框架在发生异常时无法捕获屏幕截图。这里接受的答案解决了问题:是否可以在计算机锁定时以编程方式截取屏幕截图?

© www.soinside.com 2019 - 2024. All rights reserved.