将数字从窗口复制到java程序中

时间:2017-03-08 20:57:23

标签: java io

我需要创建一个程序,将数字从窗口复制到java文件。 1 由于这些数字不在网络浏览器中,因此我无法在常规网站上扫描数据。但是,我可以单击该数字并按Ctrl + C复制它们。我基本上需要能够在屏幕上读取某些给定坐标的内容,或者可以点击数字并将其复制并粘贴到文本文件中的内容。

2 个答案:

答案 0 :(得分:0)

由于(可能)您可以使用Ctrl+C复制文本,因此您可以使用系统剪贴板。您可以使用此Stack Overflow Answer中的说明来读取系统剪贴板。

依靠系统剪贴板,您可以解决阅读屏幕某一部分的问题,并进行一些字符识别。

答案 1 :(得分:0)

The java.awt.Robot class可用于执行单击和按键操作。 The java.awt.datatransfer.Clipboard class可用于读取剪贴板。需要进口:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import java.io.IOException;

示例代码(请注意,AWTExceptionUnsupportedFlavorExceptionIOException必须由方法标题中的throws Throwable处理:

// Things that need to be set up only once.
final Robot robot = new Robot();
final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();

// If you need a loop, start it here.
for (;;) {
    // Click at (x, y).
    robot.mouseMove(x, y);
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    robot.delay(100);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    robot.delay(100);

    // Press Ctrl+C.
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_C);
    robot.delay(100);
    robot.keyRelease(KeyEvent.VK_C);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.delay(100);

    // Read clipboard.
    final String clipboardContents = (String) clipboard.getData(DataFlavor.stringFlavor);

    // Work with clipboard contents.
    System.out.println(clipboardContents);
}

至于将复制的数据放入文本文件中,您希望如何做到这一点取决于您:

  • 您可以修改上述内容以去除处理剪贴板内容的部分,只需使用Robot点击其他窗口并按Ctrl + V.
  • 您可以修改上述内容以打开文本文件,将剪贴板内容写入其中并保存。

感谢:

相关问题