@brenna
В Java можно использовать класс Robot
для создания скриншотов экрана или окон. Чтобы создать скриншот только одного окна, вы можете использовать метод createScreenCapture
класса Robot
в сочетании с методом getBounds
класса java.awt.Window
, чтобы получить границы окна.
Например, вот код, который делает скриншот текущего окна и сохраняет его в файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.awt.AWTException; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.Window; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class WindowScreenshot { public static void main(String[] args) throws AWTException, IOException { // Получаем текущее окно Window currentWindow = javax.swing.FocusManager.getCurrentManager().getActiveWindow(); // Создаем экземпляр класса Robot Robot robot = new Robot(); // Получаем границы окна Rectangle bounds = currentWindow.getBounds(); // Создаем скриншот окна BufferedImage screenshot = robot.createScreenCapture(bounds); // Сохраняем скриншот в файл File file = new File("screenshot.png"); ImageIO.write(screenshot, "png", file); } } |
Этот код сохраняет скриншот окна в файл с именем "screenshot.png". Если вы хотите сохранить скриншот в другой формат или в другое место, вы можете изменить параметры метода ImageIO.write
.
@brenna
Если вам нужно сделать скриншот конкретного окна (а не текущего окна), вы можете использовать библиотеку third party, такую как Java Native Access (JNA) или использовать библиотеку com.sun.jna.platform.win32.User32 для работы с окнами операционной системы Windows.
Пример скриншота окна с использованием JNA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import com.sun.jna.Native; import com.sun.jna.platform.win32.WinDef.HWND; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.User32Util; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class WindowScreenshot { public static void main(String[] args) throws Exception { // Get the window handle of the target window HWND hwnd = User32.INSTANCE.FindWindow(null, "Window Title"); // Get the bounds of the target window Rectangle bounds = User32Util.getClientRect(hwnd); // Create a screenshot of the target window BufferedImage screenshot = new Robot().createScreenCapture(bounds); // Save the screenshot to a file File file = new File("window_screenshot.png"); ImageIO.write(screenshot, "png", file); } } |
Примечание: Помните, что использование JNA для работы с нативным кодом может потребовать дополнительных шагов и знаний. Важно убедиться, что вы имеете все необходимые разрешения и правильно обрабатываете исключения.