【问题标题】:Read data from GUI从 GUI 读取数据
【发布时间】:2014-02-11 16:30:05
【问题描述】:

我有一个一般性问题:

如果我有一个 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 上工作)

【问题讨论】:

    标签: java user-interface save


    【解决方案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

    参考资料:

    【讨论】:

    • 好主意,你说的“让 metaTrader 使用这个代理”是什么意思,我只需要 metatrader 使用的端口吗?
    • @user3297073 当 metaTrader 或任何应用程序连接到 Internet 时,它要么直接连接,要么使用代理连接。通常,应用程序允许通过其设置来配置代理。配置完成后,应用程序会将其所有互联网呼叫转发到代理。作为回报,代理会将调用适当地转发到互联网。
    • 好的,但是你所说的“要求 metaTrader 使用这个代理”到底是什么意思,metaTrader 中是否有任何设置或者是关于监听特定端口?
    • 我只想让代理获取所有数据,这些数据会发送到 metatrader。所以代理需要监听一个端口?
    • @user3297073 代理侦听端口。 metaTrader 将在此端口上连接。然后代理将 metaTrader 发出的调用转发到 metaTrader 的实际数据源。当源回复时,代理将数据转发回 metaTrader。阅读本文了解更多详情:en.wikipedia.org/wiki/Proxy_server
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2014-07-05
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多