从 GUI 读取数据

Posted

技术标签:

【中文标题】从 GUI 读取数据【英文标题】:Read data from 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();
       
   

这个想法好不好,或者您知道的其他解决方案吗? (在 Mac 上工作)

【问题讨论】:

【参考方案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。

参考资料:

Proxy server

【讨论】:

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

以上是关于从 GUI 读取数据的主要内容,如果未能解决你的问题,请参考以下文章

信号未从线程传递到 GUI

管理 GUI 状态(创建、编辑、读取模式...)的最佳方法是啥

实时从数据阅读器终端获取数据到 GUI

在 GUI 中创建多个曲面图

Matlab ,数据库和GUi 设计

我可以使用Visual Studio从多个微控制器读取数据吗?