Woher kommen die Bildschirmkoordinaten beim java Robot?

berndoa

Top Contributor
Hallo,
ich benutze in einem Java Programm die Robot Klasse, um bestimmte Buttons zu klicken.
Natürlich hängen die benutzten Koordinaten von der Auflösung, Windows Skalierungfaktor, etc. ab.

Nun will (bzw. muss) ich zu einer virtuellen Mashcine mit geringerer Auflösung wechseln.
Ich hätte dazu gerne (um rauszufinden ob linear runterskaliert wird) rausgefunden woher die Robotklasse und Ähnliche ihre Koordinaten bzw. generell die
fiktive Bildschirmbreite und höhe hat.

Vermutlich wird das aus irgendwelchen Systemwerten abgelesen aber wie?

Habe schon im Quellcode diverser javaklassen rumgeblättert, aber finde einfahc nicht die Stelle, an der mal eine Eigenschaft desComputers (wie die Auflösung, Skalierung oder so) direkt abgefragt wird, immer werden nur andere Klassen oder Interfaces benutzt oder aufgerufen.

Weiß jemand, auf gut deutsch gesagt, woher die java klassen wie Robot die Bildschirmdimensionen hat, wie oder wo es die vom System herbekommt und wie es sich die eigenen fiktiven Koordinaten errechnet?
 
Y

yfons123

Gast
wie schon 1000 mal gesagt wurde ( da du diese frage zum xten mal stellst ) ... es ist ein dämliches unterfangen die buttons pro pixel zu finden..

außerdem was hindert dich daran auf einer 100x100 auflösung ein programm mit 1000x 1000 auflösung laufen zu lassen ? da die buttons sowieso gedrückt werden durch das programm ist es ja egal ob die buttons im sichtbaren bereich liegen oder nicht
 

berndoa

Top Contributor
wie schon 1000 mal gesagt wurde ( da du diese frage zum xten mal stellst ) ... es ist ein dämliches unterfangen die buttons pro pixel zu finden..

außerdem was hindert dich daran auf einer 100x100 auflösung ein programm mit 1000x 1000 auflösung laufen zu lassen ? da die buttons sowieso gedrückt werden durch das programm ist es ja egal ob die buttons im sichtbaren bereich liegen oder nicht
Wenn du mir sagst wie, ich bin ganz Ohr :)
Hier ist die Seite:

Was mich dran hindert?
Dass ich in virtualbox die Auflösung schlicht nicht höher als 1600x nochwas stellen kann.
Sonst hätte ich sie auf dasselbe wie das notebook selbst gestellt und hätte das Problem nicht :)
 
Y

yfons123

Gast
"Unfortunately this Operating system is not supported" ... also abgesehen von der räuberei die sie da betreiben .. auch noch telemetry dazu ekelhaft, bleib weg von solchen schund seiten!
 
Y

yfons123

Gast
The science and technology of automatic measurement and transmission of data by wire,
im prinzip das automatische sammeln von daten.. MEINER daten.. die website unterstüzt mein OS nicht also wird sehr wahrscheinlich irgendeine überprüfung passiert sein

die können aber gerne ihr betriebssystem überprüfen ABER NICHT MEINS
also glücksspiel + telemetry... ekelhaft würde mich schämen so ein programm zu bauen.. eifnach nur schmutz
 

berndoa

Top Contributor
Du verwechselst Telemetry und Tracker... Zudem schickt dein Browser das Betriebssystem standardmässig im User Agent HTTP Header mit. Hier wird wohl einfach der Fall sein, dass das Spiel nicht Mobile-tauglich ist.

@berndoa für die Auflösung sollte das helfen: https://stackoverflow.com/questions/3680221/how-can-i-get-screen-resolution-in-java
Wie ist das eigentlich , wenn ich bspw. die Auflösung runterschraube, wird dann der Bildschirm einfach irgendwie in Breite und Höhe gestreckt oder gestaucht?

Damit ich von Koordinaten, die in einer Auflösung gemessen wurden, auf Koordinaten in einer anderen Auflösung shcließen bzw. die berechnen kann :)
 

Neumi5694

Top Contributor
Wie ist das eigentlich , wenn ich bspw. die Auflösung runterschraube, wird dann der Bildschirm einfach irgendwie in Breite und Höhe gestreckt oder gestaucht?

Damit ich von Koordinaten, die in einer Auflösung gemessen wurden, auf Koordinaten in einer anderen Auflösung shcließen bzw. die berechnen kann :)
Einfache Mathematik
x * newScreenwidth / originalScreenwidth
 

Neumi5694

Top Contributor
Hm, also ich weiß nicht, entweder skaliert Chrome oder der Fensterinhalt da anders oder ich habe falsch abgelesen.
Aber irgendwie scheint dies in dem Fall zumindest nicht ganz zu passen.
Die Berechnungsmethode funktioniert klarerweise nur dann, wenn das Programm immer entsprechend der Auflösung gestreckt wird, was bei einem Browser nicht der Fall ist.
In der Regel unterscheiden Anwendungen zwischen Standard-DPI und High-DPI Auflösungen unterschieden. Handelt es sich um High-DPI, dann wird z.B. die Schriftart um 30% vergrößert, der Rest wird gleich gelassen.

In Browsern kann eh nach Lust und Laune skaliert werden, da wird nichts funktionieren, was du versuchst - zumindest nicht auf diesem Level. Deine Koordinaten müssen zu dem angezeigten Bild passen, dieses darf sich nicht verändern.
Wenn du mal mehr Erfahrung hast, kannst du natürlich Bildanalyse betreiben und nach den entsprechenden Buttons suchen.

Optional kannst du ja auch mal einen eigenen Browser entwickeln. Verwende Chrome als Basis, dann ersetze allerdings die Darstellung durch was standardisiertes, was deine Anforderungen erfüllt.


ps: Ich würd diesen ganzen Online-Glücksspielquatsch einfach lassen, da haben sich schon andere daran die Zähne ausgebissen mit bei weitem mehr Erfahrung als du.
 
Zuletzt bearbeitet:

M.L.

Top Contributor
Roulette... Ein (Online)(Glücks)Spielanbieter will mit dem Angebot Geld verdienen (und das geht wohl eher selten, wenn man effektiv mehr Geld ausgibt als das man selbst einnimmt). Und wer/was Eingaben am Bildschirm vornimmt, ist der UI idR egal (es sei denn, es werden Abfragen/Situationen verwendet, die nur ein Mensch identifizieren und bearbeiten kann)
 

berndoa

Top Contributor
Die Berechnungsmethode funktioniert klarerweise nur dann, wenn das Programm immer entsprechend der Auflösung gestreckt wird, was bei einem Browser nicht der Fall ist.
In der Regel unterscheiden Anwendungen zwischen Standard-DPI und High-DPI Auflösungen unterschieden. Handelt es sich um High-DPI, dann wird z.B. die Schriftart um 30% vergrößert, der Rest wird gleich gelassen.

In Browsern kann eh nach Lust und Laune skaliert werden, da wird nichts funktionieren, was du versuchst - zumindest nicht auf diesem Level. Deine Koordinaten müssen zu dem angezeigten Bild passen, dieses darf sich nicht verändern.
Wenn du mal mehr Erfahrung hast, kannst du natürlich Bildanalyse betreiben und nach den entsprechenden Buttons suchen.

Optional kannst du ja auch mal einen eigenen Browser entwickeln. Verwende Chrome als Basis, dann ersetze allerdings die Darstellung durch was standardisiertes, was deine Anforderungen erfüllt.


ps: Ich würd diesen ganzen Online-Glücksspielquatsch einfach lassen, da haben sich schon andere daran die Zähne ausgebissen mit bei weitem mehr Erfahrung als du.
Klar, ich gehe jetzt mal davon aus dass im browser selbst nicht auch noch skaliert ist (bspw. wenn firefox offen ist, kann man ja den Fensterinhalt mit strg und + oder - vergrößern und verkleinern, also direkt das browserfenster nochmal skalieren).

Ich gehe jetzt mal von der standardvariante aus, so wie chrome aussieht wenn es frisch installiert wurde und ich einfach die casinoseite bzw. den roulettetisch dort aufrufe.

eigenen browser will ich jetzt echt nicht entwerfen, brauche ja auch keinen eigene browser.


Wenn ich nur wüsste wie sich ein browser und sein inhalt abhängig vond er auflösung verändert, könnte man da vielleicht was berechnen.

so bleibt es wohl doch dabei dass ich bei jeder auflösungsänderung die punkte neu ablesen muss.

Naja, wenigstens habe ich mir das etwas vereinfacht indem ich nun einen screenshot in der Wunschauflösung mache und über das Bild ein Raster lege, gewissermassen ein passendes koordinatensystem.

aber trotzdem...


Ich habe auch schon Richtung Dom Manipulation und Ähnliches geguckt um vielleicht abzulesen im Quellcode wo was ist.

Nur handelt es sich beim dem Roulettefeld um eine Canvas und der wichtige Part (wo ist welcher Button, wo befindet sich gerade die maus, wo wurde draufgeklickt, etc.) scheinen mittels javascript oder sowas zu gehen.
jedenfalls fidne ich im Quellcode nichts Gescheites :-/



Scheinbar bei den HTTP Requests und den Antworten darauf werden offenbar die gesetzten Einsätze sowie die Gewinnzahl übermittelt, wie man das rausfiltert... keine Ahnung. Javascript in der Browserkonsole vielleicht?

Nur die Positionen und so finde ich nirgends raus.

Und die von der Seite benutzten javascript Skripte sind nur kryptishc, mit variabelnamen wie m,n,r,s,t,g,h, usw. ...
 

osion

Bekanntes Mitglied
Hallo,
ich benutze in einem Java Programm die Robot Klasse, um bestimmte Buttons zu klicken.
Natürlich hängen die benutzten Koordinaten von der Auflösung, Windows Skalierungfaktor, etc. ab.

Nun will (bzw. muss) ich zu einer virtuellen Mashcine mit geringerer Auflösung wechseln.
Ich hätte dazu gerne (um rauszufinden ob linear runterskaliert wird) rausgefunden woher die Robotklasse und Ähnliche ihre Koordinaten bzw. generell die
fiktive Bildschirmbreite und höhe hat.

Vermutlich wird das aus irgendwelchen Systemwerten abgelesen aber wie?

Habe schon im Quellcode diverser javaklassen rumgeblättert, aber finde einfahc nicht die Stelle, an der mal eine Eigenschaft desComputers (wie die Auflösung, Skalierung oder so) direkt abgefragt wird, immer werden nur andere Klassen oder Interfaces benutzt oder aufgerufen.

Weiß jemand, auf gut deutsch gesagt, woher die java klassen wie Robot die Bildschirmdimensionen hat, wie oder wo es die vom System herbekommt und wie es sich die eigenen fiktiven Koordinaten errechnet?
Die Frage ist wie Java zu den Daten kommt?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
S Woher Sounds downloaden? Allgemeine Java-Themen 1
C Woher weiß Glasfish das? Allgemeine Java-Themen 3
A Compiler-Fehler Woher kommt der NullPointer? (Collections & Iterator) Allgemeine Java-Themen 7
D Fehler, woher kommt er? Allgemeine Java-Themen 9
J SQLException.getNextException; woher nehmen? Allgemeine Java-Themen 9
V JProgressbar, woher Prozentwerte? Allgemeine Java-Themen 2
F Woher bekomme ich "dlib" oder: Interpreter-Program Allgemeine Java-Themen 2
K Woher weiss ein Objekt, zu welchem anderen Objekt es gehört? Allgemeine Java-Themen 8
S [1/2done] Woher bekommt man libarys die es erst ab 1.6 gibt. Allgemeine Java-Themen 10
T Fehlersuche bzw. woher kommt diese ausgabe? Allgemeine Java-Themen 2
M toolbar symbole "selbstmalen" oder woher? Allgemeine Java-Themen 5
G woher installiertes JDK? (keine Adminrechte) Allgemeine Java-Themen 3
Z Woher bekomme ich Icon's? Allgemeine Java-Themen 2
P Woher weiß ein Programm wo seine Ressourcen sind? Allgemeine Java-Themen 4
M NOA an den Source Text des Dokumentes kommen Allgemeine Java-Themen 7
T Drucken von variabel langen Listen (es kommen nur leere Seiten raus) Allgemeine Java-Themen 2
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
G Was soll noch alles in Java kommen? Allgemeine Java-Themen 14
W Wo kommen die Java-Klassen hin? Allgemeine Java-Themen 15
N Reflection: An Package einer .class-Datei kommen Allgemeine Java-Themen 2
N an die Klasse eines Runnable Threads kommen? Allgemeine Java-Themen 9
R Wiederholungsrate von Tastatureingaben früher kommen lassen Allgemeine Java-Themen 5
B Ist java Im kommen, oder im Rückgang Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben