如何使用包装为Windows服务的java程序捕获屏幕截图

时间:2017-03-09 18:48:17

标签: java windows service screenshot

我有一个java程序来捕获Windows上的截图。这是代码的一部分。它在由YAJSW包装时生成黑色图像并作为Windows服务运行。

BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        ImageIO.write(image, "png", file.toFile());

我知道这是由于Windows服务的一些限制。但有什么方法可以让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我在同一主题How to take a screenshot in Java?

上发现了另一篇文章

从第二个答案中尝试以下代码: 如果这不起作用,它将排除代码的一个隐藏部分导致错误的可能性。

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;


public class screen2image
{
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd hh mm ss a");

    public void robo() throws Exception
    {
        Calendar now = Calendar.getInstance();
        Robot robot = new Robot();
        BufferedImage screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        ImageIO.write(screenShot, "JPG", new File("d:\\"+formatter.format(now.getTime())+".jpg"));
        System.out.println(formatter.format(now.getTime()));
    }

    public static void main(String[] args) throws Exception
    {
        screen2image s2i = new screen2image();
        while(1==1)
        {
            s2i.robo();
            Thread.sleep(10000);
        }
    }
}

希望它对你有所帮助! 如果这不起作用,您应该检查Windows / Java安装......