2017-03-09 57 views
0

我有一个Java程序来捕获Windows上的屏幕截图。这是代码的一部分。它由YAJSW包装并生成黑色图像并作为Windows服务运行。如何使用包装为Windows服务的Java程序捕获屏幕截图

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

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

回答

0

我发现了同一主题的另一篇文章How to take a screenshot in Java?

尝试从第二个答案下面的代码: 如果不工作,这将排除这样的可能性,你的代码中的一个隐藏的部分负责的bug 。

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安装...

相关问题