目的是只要 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
潇潇雨雨
相关分类