从GUI读取数据

时间:2014-02-11 16:30:05

标签: java user-interface save

我有一个普遍的问题:

如果我有GUI(例如metaTrader =>在线经纪人),是否可以使用java从此GUI读取数据?

我的想法:

使用java.awt.robot并执行以下操作:

package java_robot;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;

public class java_robot {

   public static void main(String[] args) {

       try {
           // create class
           Robot robot = new Robot();

           // wait 1 sec
           robot.delay(1000);

           // move mouse to wanted area
           robot.mouseMove(x, y);
           }

           // mark an area, copy it and save in file..

       } catch (AWTException e) {
           e.printStackTrace();
       }
   }
}

这个想法是好的,还是您知道从GUI读取数据的其他解决方案? (在Mac上工作)

1 个答案:

答案 0 :(得分:1)

您可以在此处使用Robot#createScreenCapture()方法。

Robot r = new Robot();

// Capture area
int width = ...
int height = ...
Rectangle area = new Rectangle(width, height);
BufferedImage image = r.createScreenCapture(area);

// Save to file
ImageIO.write(image, "png", new File("/screenshot.png"));

或者,如果metaTrader从互联网加载其数据,您可以窃取其流量并确定其数据的来源和位置。然后你可以试着模仿它的互联网电话,只要它没有加密就自己获取数据。

您还可以使用Java构建代理并要求metaTrader使用此代理。 metaTrader请求的所有数据都将通过您的代理。只要它没有加密,这可以让你有机会再次读取数据。

下图说明了工作原理。 Alice扮演meaTrader的角色。 Bob是metaTrader数据的来源。代理是您的Java应用程序。

enter image description here

您可以在此处找到此类代理的简单实现:http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

参考文献: