# java bot grundkenntnisse



## Mischka (18. Feb 2010)

hallo,
ich möchte einen einfachen bot in java schreiben.
dafür bräuchte ich eure hilfe, denn ich bin leicht aus der übung.

ich bräuchte ein paar antworten auf folgende fragen und bitte euch dabei um eure hilfe:

1. wie kann ich mit dem MouseListener (nur ein Vorschlag) Mausklicks die nicht innerhalb der Java Gui passieren aufzeichnen?
2. wie kann ich die farbe eines bestimmten Pixels auf dem Bildschirm auslesen?

mfg
mischka


----------



## eRaaaa (18. Feb 2010)

1.) wirst du so an sich nicht hin bekommen _glaube ich_. 

2.) mit der Robot-Klasse und der Methode getPixelColor(x, y)


----------



## Mischka (18. Feb 2010)

vielen dank für die antwort.

also das ich nicht hinbekommen kann ich gut glauben. aber es ist mit sicherheit igrnetwie möglich. Und wenn es möglich ist, hat sich irgentein schlauer fux hingesetzt und es programmiert, um leute wie mir zu ermöglichen diese funktion zu nutzten.

und für das zweite problem habe ich soeine einfach möglichkeit garnicht in betracht gezogen. thx.


----------



## eRaaaa (18. Feb 2010)

Ja klar mit Sicherheit. Ich wollte damit ja nur sagen, dass das von Java von Haus aus nicht möglich ist und du *wahrscheinlich* nach einer plattformspezifischen / JNI - Lösung Ausschau halten musst... ???:L


----------



## Mischka (18. Feb 2010)

jo, das ist schade, aber das programm soll sowieso größtenteils in einer virtuellen maschiene mit xp laufen.
auf meiner linux kiste habe ich sowiso keine gui xD.


----------



## 0x7F800000 (18. Feb 2010)

Sicher die richtige Sprache ausgesucht?
Um 


Mischka hat gesagt.:


> einen einfachen


...und nicht notwendigerweise erweiterbaren und leicht wartbaren Code zu schreiben, kommt man evtl. auch ohne Java aus. Für irgendwelche Egoshooter ist's afaik nicht so sonderlich geeignet, wenn's um browsergames ginge, wär's evtl. was anderes...


> 1. wie kann ich mit dem MouseListener (nur ein Vorschlag) Mausklicks die nicht innerhalb der Java Gui passieren aufzeichnen?
> 2. wie kann ich die farbe eines bestimmten Pixels auf dem Bildschirm auslesen?



bzgl. des ersten Punktes scheint eRaaaa Recht zu haben, die Koordinaten kriegt man grad noch so rausgekratzt, aber wie das ding auf Klicks reagieren soll? Keine Ahnung... 

```
import java.awt.*;

public class MouseWatcher {

	public static void main(String..._){
		
		{
			try{
				final Robot robot = new Robot();
				
				new Thread(){
					@Override
					public void run(){
						while(true){
							Point p = MouseInfo.getPointerInfo().getLocation();
							System.out.println(p+"\t"+robot.getPixelColor(p.x, p.y));
							try{
								sleep(1000);
							}catch(InterruptedException e){}
						}
					}
				}.start();
				
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		
	}
}
```
schon frustrierend irgendwie... :autsch:

Evtl. kann man sich da mit irgendwelchen merkwürdigen Manövern mit durchsichtigen Java-Fenstern über der eigentlichen Applikation weiterhelfen...???:L

edit: holy crap bin ich lahm...:autsch:


----------



## eRaaaa (18. Feb 2010)

Naja, wenns nur unter XP laufen soll:
SoftK.de | Stefan Kiesel(The_S) - JGlobalKeyListener 
lief bei mir mal unter XP..kannste ja mal bei dir testen!


----------



## Mischka (18. Feb 2010)

vielen dank 0x7F800000, aber damit kann ich leider nichts anfangen.

und eRaaaa, das scheint ja genau das zu sein was ich suche, doch irgentwie krieg ich den keylogger nicht dazu mir zu sagen an welcher position [LEFT_MOUSE] gedrückt wurde.
kannst du mir da weiterhelfen?


----------



## eRaaaa (18. Feb 2010)

Das kann er glaube ich dir auch nicht sagen! Aber wie 0x7F800000 schon sagte ist es relativ leicht die Mausposition zu ermitteln: MouseInfo.getPointerInfo().getLocation(). (so einen hohen delay wird der Logger nicht haben, dass sich die Mausposition drastisch ändern kann denk ich mal --> einfach ausprobieren ^^)


----------



## Mischka (18. Feb 2010)

danke für den tipp. Aber zu meiner verteidigung: es ist schon späd xD.

Ich bin einfach nicht darauf gekommen aus:

```
public void keyPressed(GlobalKeyEvent gke) {
	System.out.print(gke.getConverted());
}
```
folgendes zu machen:

```
public void keyPressed(GlobalKeyEvent gke) {
	if(gke.getConverted().toString() == "[LEFT_MOUSE]"){
		System.out.println(MouseInfo.getPointerInfo().getLocation().toString());
	}
}
```

naja, damit ist meine frage beantwortet.

Vielen Dank für die Anteilnahme und Gute Nacht.


----------



## eRaaaa (18. Feb 2010)

Mischka hat gesagt.:


> naja, damit ist meine frage beantwortet.



:toll: dennoch ein/zwei Tips: 
[c]if(gke.getConverted().toString() == "[LEFT_MOUSE]"){[/c]

getConverted() liefert schon einen String, also brauchst du da nicht extra noch toString aufrufen.
Des weiteren sind Strings Objekte, daher solltest du die mit equals vergleichen, nicht mit == 
http://www.java-forum.org/top-fragen/1350-vergleichen-strings.html

[c]if(gke.getConverted().equals("[LEFT_MOUSE]"))[/c] 

Gute Nacht !


----------



## Mischka (2. Mrz 2010)

moin,
ich habe da letztens dieses opensource projekt htmlunit entdeckt und würde meinen bot jetzt gerne überarbeiten.

Um es genau zu sagen soll es ein browsergame-bot werden, der sich einloggen kann, einheiten baut und angriffe zeitgesteuert ausführt.

mein englisch ist nicht das beste und die website von htmlunit ist komplett auf englisch.

also bitte ich euch mit den einstieg zu erleitern.


----------

