【问题标题】:How to capture screenshot using a java program wrapped as windows service如何使用包装为 Windows 服务的 java 程序捕获屏幕截图
【发布时间】:2017-03-10 03:42:15
【问题描述】:

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

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

我知道这是由于 Windows 服务的一些限制。但是有什么办法让它工作吗?

【问题讨论】:

    标签: java windows service screenshot


    【解决方案1】:

    我发现了另一篇关于同一主题的帖子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 安装...

    【讨论】:

      猜你喜欢
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      相关资源
      最近更新 更多