捕获Active Window的截图

时间:2012-05-05 03:24:52

标签: java screenshot clipboard awtrobot

我创建了一个小应用程序,允许用户捕获屏幕截图并将图像保存在用户定义的位置。它还允许用户捕获活动窗口的屏幕截图。

问题在于活动窗口。我了解到Java没有提供获取活动窗口截图的方法。所以,我用Google搜索并发现开发人员一直在使用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键时,焦点会转到应用程序的工具栏上,用户想要获取屏幕截图并截取工具栏的屏幕截图,而不是工具栏的屏幕截图。用户关注的窗口。

请告知如何解决此问题。

1 个答案:

答案 0 :(得分:1)

如果这是我的应用程序,我会使用JNA -- Java Native Access获取活动窗口及其大小,然后使用该信息让机器人抓取图像。