Захват экрана во время блокировки экрана с использованием Java на Windows - PullRequest
0 голосов
/ 26 октября 2019

Цель состоит в том, чтобы делать снимок экрана независимо от блокировки экрана, пока работает 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);
        }

    }

}

env
Windows 10
JDK 12

...