Как захватить выбранный экран другого приложения, используя Java?

Я уже сталкивался с этим раньше. Группировка больше предназначена для совокупных выражений или идентичных записей. Мои исследования показали, что лучше всего сделать что-то вроде этого:

    SELECT  u.*, p.method, p.id AS payment_id
    FROM    (
        SELECT  DISTINCT users.id
        FROM    users
        ) ur
    JOIN    payments p
    ON      p.id =
        (
        SELECT  pt.id
        FROM    payments pt
        WHERE   pt.user_id = ur.id
        ORDER BY
                pt.id DESC
        LIMIT 1
        )
10
задан Jeff Atwood 21 January 2009 в 10:39
поделиться

6 ответов

На основе описания Prajakta проекта я полагаю, что некоторое объяснение управления снимком экрана в порядке (я думаю, что John сделал превосходное задание объяснения, как получить снимок экрана с помощью java.awt. Класс робота). Помните, как Steve McLeod сказал, Java не может автоматически определять местоположение местоположения окна, которое Вы хотите получить на экране. Это важно, потому что класс Робота должен знать это местоположение, или автоматически или вручную от Вас.

Выноски, текст, изображения, и т.д. могут быть добавлены к снимку экрана через объект Graphics2D, который что Вы получаете при вызове createGraphics () методом BufferedImage снимка экрана. Я настоятельно рекомендую, чтобы Вы проверили API Graphics2D для лучше понимания то, к чему это способно. Я также рекомендую найти некоторые учебные руководства, возможно, начиная с 2D Графическое Учебное руководство от Sun. Книга, озаглавленная "Грязные Толстые клиенты", может также пригодиться.

Когда Вы наконец хотите сохранить этот измененный снимок экрана, можно использовать тот из методов "записи" класса ImageIO.

Вот очень простое, запустите к концу пример. Вам решать заполнить безотносительно необходимых деталей.

Я надеюсь эта справка немного!

Robot robot = new Robot();

// The hard part is knowing WHERE to capture the screen shot from
BufferedImage screenShot = robot.createScreenCapture(x, y, width, height);
Graphics2D graphics = screenShot.createGraphics();

// Add a label to the screen shot
Color textColor = Color.RED;
graphics.setColor(textColor);
graphics.drawString("Some text", textX, textY);

// Save your screen shot with its label
ImageIO.save(screenShot, "png", new File("myScreenShot.png"));
11
ответ дан 3 December 2019 в 16:31
поделиться

Возможно, java.awt. Класс робота помог бы со снимками экрана, хотя я не думаю, что это способно к определению местоположения отдельных окон. Что касается их "называют outs", класс Робота может также вызвать щелчки мышью и нажатия клавиш, если, именно это Вы имеете в виду.

3
ответ дан 3 December 2019 в 16:31
поделиться

Необходимо будет предоставить более определенную информацию для получения значимой справки. Прежде всего, Какие операционные системы это должно продолжить работать? Необходимо ли получить содержание отдельных окон или буквально всех дисплеев (Вы использовали неоднозначный термин, "выбрал экран другого приложения" в Вашем исходном сообщении). Что конкретно Вы хотите видеть, когда Вы, "добавляют выноска к полученному экрану"?

2
ответ дан 3 December 2019 в 16:31
поделиться
Robot r = new Robot();
Toolkit t = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
Image i = r.createScreenCapture( 0, 0, d.width, d.height );

должен получить Вас целое изображение целого экрана. не уверенный, если это получает Вас целые вещи, если у Вас есть несколько мониторов, хотя...

5
ответ дан 3 December 2019 в 16:31
поделиться

Вероятно, Вы можете отсутствие Робота обходного решения способности знать границы окна, позволяя пользователю выбрать область, которую он хочет к снимку экрана.

У Вас есть два подхода, если опция является полным экраном, Вы не должны волновать, следовать за подходом Робота, описанным прежде.

Если applicatin для желаемой области:

  1. Запустите требуемое приложение.

  2. Возьмите полный экран рабочего стола.

  3. Создайте полноэкранное приложение с помощью снимка экрана в качестве фона, ТОЛЬКО чтобы позволить пользователю выбирать область, где получить изображение (Вы запускаете с небольшого квадрата и позволяете пользователю перетащить, пока он не создает желаемый снимок экрана),

  4. Передайте эту информацию Роботу и сделайте снимки экрана от той области.

Что-то вроде этого:

сопроводительный текст http://img136.imageshack.us/img136/8622/screencapturebb3.png

Если Вам не нравится опция использовать полный снимок экрана в качестве фона, можно использовать прозрачное окно.

И сделайте то же:-)

Вторая опция Aaahhh состоит в том, чтобы попытаться определить границы, анализируя изображения, но честно, я не думаю это стоящий того.

Существует третья опция, но секрет.

3
ответ дан 3 December 2019 в 16:31
поделиться

Если Вы хотите сделать снимок экрана определенного окна другого кода не-JAVA-приложения, я думаю, что необходимо будет написать некоторому собственному компоненту (т.е. не-Java) код. Взаимодействие между приложениями Java и приложениями не-Java на таком уровне является трудным.

1
ответ дан 3 December 2019 в 16:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: