2017-03-09 1 views
0

J'ai un programme Java pour capturer la capture d'écran sur Windows. Voici une partie du code. Il génère une image noire lorsqu'il est enveloppé par YAJSW et exécuté en tant que service Windows.Comment faire pour capturer la capture d'écran en utilisant un programme java enveloppé comme service Windows

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

Je sais que cela est dû à certaines limitations du service Windows. Mais y a-t-il un moyen de le faire fonctionner?

Répondre

0

Je trouve un autre poste sur le même sujet How to take a screenshot in Java?

Essayez le code suivant à partir de la deuxième réponse: Si ce travail ne marche pas, il exclurait la possibilité, qu'une partie cachée de votre code est responsable du 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); 
     } 
    } 
} 

espérons qu'il vous aidera! Si cela ne fonctionne pas, vous devriez probablement vérifier votre installation Windows/Java ...