Captura Tela [Resolvido]

2 respostas
R

Estou com um problema na qual, estou tentando capturar a tela com alt+tab dando um
print screen nela so que a primeira vez ele pega normal, ja a segunda vez ele pega a mesma imagem
da primeira alguem sabe me dar alguma ideia do que fazer?

try {

                                    // Alterna para a última janela acessada
                                    Robot robot = new Robot();
                                    robot.keyPress(KeyEvent.VK_ALT);
                                    robot.keyPress(KeyEvent.VK_TAB);
                                    robot.keyRelease(KeyEvent.VK_TAB);
                                    robot.keyRelease(KeyEvent.VK_ALT);
                                    
                                    Thread.sleep(1000);
                                    
                                    robot.keyPress(KeyEvent.VK_ALT);
                                    robot.keyPress(KeyEvent.VK_PRINTSCREEN);
                                    
                                    //Busca imagem da Area de Transferencia
                                    Clipboard clip = null;
                                    
                                    clip = Toolkit
                                    .getDefaultToolkit()
                                    .getSystemClipboard();
                                    
                                    Transferable clipboardContents = null;
                                    
                                    clipboardContents = 
                                    	clip.getContents(null);
                                    
                                    BufferedImage bimage = null;
                                    
                                    //Executa captura da tela
                                    bimage = (BufferedImage) 
                                    clipboardContents.getTransferData(DataFlavor.imageFlavor); 
                                    
                                    ByteArrayOutputStream out = null;
                                    
                                    // Cria array de bytes com a imagem
                                    // capturada
                                    out = new ByteArrayOutputStream();
                                    ImageIO.write(bimage, "PNG", out);
                                    imageBytes = null;
                                    imageBytes = out.toByteArray();
                                    out.close();
                                    
                                    // Volta para a tela de origem
                                    robot.keyPress(KeyEvent.VK_ALT);
                                    robot.keyPress(KeyEvent.VK_TAB);
                                    robot.keyRelease(KeyEvent.VK_TAB);
                                    robot.keyRelease(KeyEvent.VK_ALT);
                                    
                                    
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

2 Respostas

Mikhas

Não sei se é esse o problema… mas voce pode usar o metodo createScreenCapture da classe Robot.

Como diz o nome, ele captura a tela e retorna um BufferedImage que voce pode salvar com o ImageIO.

R

Na verdade eu precisava so do print da tela em foco e não dela inteira, mas
acabei achando a solução, estava esquecendo de fazer o Release na tecla e dar
um tempo para isto… ficou desta forma dai:

robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_PRINTSCREEN);
Thread.sleep(1000);
robot.keyRelease(KeyEvent.VK_PRINTSCREEN);
robot.keyRelease(KeyEvent.VK_TAB);
Criado 29 de outubro de 2008
Ultima resposta 30 de out. de 2008
Respostas 2
Participantes 2