2012-05-05 6 views
0

사용자가 스크린 샷을 캡처하고 사용자가 정의한 위치에 이미지를 저장할 수있는 작은 응용 프로그램을 만들었습니다. 또한 사용자가 활성 창의 스크린 샷을 캡처 할 수 있습니다.활성 창 캡처 화면

문제는 활성 창이 있습니다. Java가 활성 창의 스크린 샷을 가져 오는 방법을 제공하지 않는다는 것을 알게되었습니다. 그래서, 나는 봤고 그 개발자가 Alt + PrntScrn을 사용하여 스크린 샷을 얻고 클립 보드에서 이미지를 가져 오는 것을 발견했습니다.

코드는 다음과 같은 하나입니다

 robot.keyPress(KeyEvent.VK_ALT); 
    robot.keyPress(KeyEvent.VK_PRINTSCREEN); 
    robot.keyRelease(KeyEvent.VK_PRINTSCREEN); 
    robot.keyRelease(KeyEvent.VK_ALT); 
    Thread.sleep(1500); 
    RenderedImage image = (RenderedImage)getClipboard(); 
    saveToImage(image,targetLocation); 

지금 무슨 일하면 Alt 키가 로봇 클래스에 의해 누를 때, 초점은 사용자가하고 싶어있는 응용 프로그램의 도구 모음에가는 것입니다 스크린 샷과 스크린 샷은 툴바에서 가져온 것이지 사용자가 초점을 맞추고있는 것은 아닙니다.

이 문제를 해결하는 방법에 대해 조언하십시오.

+0

* "개발자가 Alt + PrntScrn을 사용하여 스크린 샷을 얻은 것으로 밝혀졌습니다."* Windows에서만 작동하는 AFAIU. –

답변

1

이것이 내 응용 프로그램 인 경우 JNA -- Java Native Access을 사용하여 활성 창과 크기를 얻은 다음 해당 정보를 사용하여 로봇이 이미지를 잡을 수있게합니다.

+0

@Hovercraft의 답을 바탕으로, 나는 그것이 [GetForegroundWindow()를 첫 번째로 전달하는 [this] (http://stackoverflow.com/questions/4433994/java-window-image/4453456#4453456)와 같을 수 있다고 생각합니다. GetWindowRect의 매개 변수. –