我有一个普遍的问题:
如果我有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上工作)
答案 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应用程序。
您可以在此处找到此类代理的简单实现:http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm。
参考文献: