2017-03-11 272 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的,甚至可以訪問其他進程的圖形用戶界面?

沒有和沒有。

相關問題