2014-02-11 3 views
0

У меня есть общий вопрос:Чтение данных из графического интерфейса

Если я получил графический интерфейс (например, MetaTRADER => онлайн брокера), можно считывать данные из этого графического интерфейса с помощью Java?

Моя идея:

Использование 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(); 
     } 
    } 
} 

Является ли эта идея хорошая, или вы знаете другие solution's для чтения данных с графическим интерфейсом? (работает на 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 загружает данные из Интернета, вы можете sniffe свой трафик и определить, как и когда приходит его данные. Затем вы можете попытаться имитировать свои интернет-вызовы и получить данные самостоятельно, если они не зашифрованы.

Вы также можете создать прокси-сервер в Java и попросить metaTrader использовать этот прокси-сервер. Все данные, запрошенные metaTrader, будут проходить через ваш прокси. Это может дать вам возможность прочитать данные ... еще раз, пока это не зашифровано.

На изображении ниже показано, как все работает. Алиса играет роль meaTrader. Боб является источником данных metaTrader. Прокси - ваше приложение Java.

enter image description here

Вы можете найти простую реализацию такой прокси здесь: http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm.

Ссылки:

+0

большие idea's, Что ты имеешь в виду "попросить MetaTRADER использовать этот прокси-сервер", я просто нужен порт, который Метатрейдер use's или? – user3297073

+0

@ user3297073 Когда metaTrader или любое приложение подключается к Интернету, оно либо делает это напрямую, либо с помощью прокси. Обычно приложение позволяет через свои настройки настраивать прокси-сервер. После настройки приложение перенаправляет все свои интернет-вызовы на прокси-сервер. Прокси-сервер в свою очередь направляет вызовы в Интернет соответствующим образом. – Stephan

+0

ОК, но что именно означает «спросить metaTrader, чтобы использовать этот прокси», есть ли какие-либо настройки в metaTrader или это касается прослушивания определенного порта? – user3297073

Смежные вопросы