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