Witam, czy jest możliwość odczytania danych z innej aplikacji i przeniesienia jej do swojej?
Pytam, ponieważ chciałbym stworzyć program rysujący mapę do gry Otchłań:
Na podstawie podanych komend w grze (north, south, east, west - później być może jeszcze piętra - up,down) program ma w zamiarze rysować mapę. Niestety nie wiem w jaki sposób mógłbym pobrać te dane - czy gracz wpisał n,s,e lub w.
Jestem początkującym programistą jeśli chodzi o jave, a więc jestem otwarty na wszelką krytykę lub też pomoc :)
Oto co na razie udało mi się stworzyć.
Główna klasa:
package com.matixar.mapcreator;
import java.awt.Canvas;
import java.awt.Dimension;
import javax.swing.JFrame;
import com.matixar.mapcreator.Checker;
public class Main extends Canvas implements Runnable
{
private static final long serialVersionUID = 1L;
public static int width = 480;
public static int height = width / 4 * 3;
public static String title = "Test";
private Thread thread;
private JFrame frame;
private boolean running = false;
public Main()
{
Dimension size = new Dimension(width, height);
setPreferredSize(size);
frame = new JFrame();
Checker.check(frame);
}
public synchronized void start()
{
running = true;
thread = new Thread(this,"Display");
thread.start();
}
public synchronized void stop()
{
running = false;
try
{
thread.join();
}catch(InterruptedException e) {e.printStackTrace();}
}
public void run()
{
while(running)
{
}
}
public static void main(String[] args)
{
Main window = new Main();
window.frame.setResizable(false);
window.frame.setTitle(title);
window.frame.add(window);
window.frame.pack();
window.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.frame.setLocationRelativeTo(null);
window.frame.setVisible(true);
window.start();
}
}
Zrobiłem osobną klasę do sprawdzenia, czy gra jest uruchomiona:
package com.matixar.mapcreator;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Checker
{
public Checker()
{
}
public static void check(JFrame frame)
{
while(true)
{
try
{
String line;
String pidInfo = "";
Process running =Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
BufferedReader runningInput = new BufferedReader(new InputStreamReader(running.getInputStream()));
while ((line = runningInput.readLine()) != null)
{
pidInfo += line;
}
runningInput.close();
if(pidInfo.contains("otchlan.exe"))
{
JOptionPane.showMessageDialog(frame, "Otchłań uruchomiona!");
break;
}
else
{
JOptionPane.showMessageDialog(frame, "Nie wykryto Otchłani!");
Object[] options = {"Ok, już włączam!",
"Wyłącz program"};
int n = JOptionPane.showOptionDialog(frame,
"Proszę najpierw włączyć Otchłań!",
"Mały problem",
JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null,
options,
options[0]);
if(n == 1) System.exit(0);
}
}catch(IOException ep) {ep.printStackTrace();}
}
}
}