【问题标题】:Capture screenshot of Active Window捕获活动窗口的屏幕截图
【发布时间】:2012-05-05 03:24:51
【问题描述】:

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

问题在于活动窗口。我了解到 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 键时,焦点转到用户想要获取屏幕截图的应用程序的工具栏上,并且屏幕截图是从工具栏而不是工具栏上截取的用户关注的窗口。

请告知如何解决这个问题。

【问题讨论】:

  • "发现开发者一直在使用 Alt+PrntScrn 来获取屏幕截图"仅适用于 Windows 的 AFAIU。

标签: java screenshot clipboard awtrobot


【解决方案1】:

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

【讨论】:

  • 基于@Hovercraft 的回答,我认为这可能类似于this,将GetForegroundWindow() 作为GetWindowRect 的第一个参数传递。
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多