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?
 
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
 
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 🙂
 
"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!
 
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
 
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 🙂
 
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
 
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:
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)
 
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. ...
 
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?
 

Zurück
Oben