2017-03-09 64 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安裝...

相關問題