2012-05-05 59 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獲取屏幕截圖」* AFAIU只適用於Windows。 –

回答

1

如果這是我的應用程序,我會使用JNA -- Java Native Access獲取活動窗口及其大小,然後使用該信息讓機器人抓取圖像。

+0

基於@Hovercraft的回答,我認爲可以像[this](http://stackoverflow.com/questions/4433994/java-window-image/4453456#4453456),通過'GetForegroundWindow()'作爲第一'GetWindowRect'的參數。 – 2016-10-13 01:38:35