Java 捕获活动窗口的屏幕截图

Java 捕获活动窗口的屏幕截图,java,screenshot,clipboard,awtrobot,Java,Screenshot,Clipboard,Awtrobot,我创建了一个小应用程序,允许用户捕获屏幕截图并将图像保存在用户定义的位置。它还允许用户捕获活动窗口的屏幕截图 问题在于活动窗口。我了解到Java不提供获取活动窗口屏幕截图的方法。所以,我在谷歌上搜索发现,开发人员一直在使用Alt+PrntScrn从剪贴板上获取屏幕截图和图像 代码如下所示: robot.keyPress(KeyEvent.VK_ALT); robot.keyPress(KeyEvent.VK_PRINTSCREEN); robot.keyReleas

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

问题在于活动窗口。我了解到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);
现在发生的情况是,当robot类按下Alt键时,焦点转到用户想要获取屏幕截图的应用程序的工具栏上,屏幕截图取自工具栏,而不是用户关注的窗口


请就如何解决此问题提供建议。

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

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

发现开发人员一直在使用Alt+PrntScrn获取屏幕截图“仅在Windows上工作的AFAIU”。发现开发人员一直在使用Alt+PrntScrn获取屏幕截图一个只在Windows上工作的AIU。基于@Hovercraft的答案,我认为可能类似于,传递
getForeGroundIndow()
作为
GetWindowRect
的第一个参数。基于@Hovercraft的答案,我认为可能类似于,传递
getForeGroundIndow()
作为
GetWindowRect
的第一个参数。