2017-03-11 232 views
-2

对不起,这个问题很广泛,但我不知道如何去做。从应用程序中获取图像

在Java中,如何获取Windows应用程序以图像形式显示的内容?

我希望图像的内容只包含一个应用程序窗口的框架,而不是整个显示器。

我认为从窗口的标题获取应用程序窗口可能是一个开始,但是Java甚至可以访问其他进程的GUI?

+2

机器人类可以在屏幕上获取任何图像。但是,要确定单独的窗口过程,您需要超越核心Java并使用其他工具,如JNI,JNA或其他第三方库。这意味着任何解决方案都可能是操作系统特定的。 –

回答

0

您可以在纯Java中执行的最佳操作是使用Robot类来捕获指定的矩形。以下Q & A显示了矩形是整个屏幕的情况。

(这应该适用于所有非无头的Java SE平台。)

这是容易一点。难点是弄清楚截图的矩形。 Java库不提供用于查找有关“其他”应用程序的屏幕位置信息的API。为了找到这种信息,您的Java应用程序需要通过本地库或外部实用程序命令与本地操作系统进行交互。这将不可避免地具有平台特定性......这意味着它将在Mac和Linux中破解,并且可能也会破坏其他版本的Windows。

我不会在Java中尝试这样做。相反,我会寻找可以作为外部应用程序运行的特定于操作系统的屏幕截图应用程序;例如使用Process.exec。或者,我会弄清楚如何编写这样的应用程序,例如在C#中。


我觉得从窗口的标题让应用程序窗口可能是一个开始,但Java的,甚至可以访问其他进程的图形用户界面?

没有和没有。

相关问题