Robot kann Button nicht drücken warum?

Vunce

Mitglied
Hallo,

einige von euch kennen vielleicht das Programm CCleaner, habe mir etwas geschrieben was den Button Run Cleaner auf dem Bildschirm findet und die Maus auf den Button bewegt.

Nun wollte ich mit
Java:
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
das der Button geklickt wird, jedoch funktioniert das nicht, ich bin mir sicher das geklickt wird, es funktioniert bei anderen Dingen wie dem Start Symbol von Windows7, jedoch der Button vom CCleaner springt nicht drauf an, ich schätze das liegt mal wieder an Java -.-, hat wer ne Idee wie ich hinbekomm das der Button nun geklickt wird?.
 
Ja das liegt an Java, dafür ist die Sprache nunmal nicht gemacht.
Mit C/C++ würd das gehen. Eine Möglichkeit wäre also (um trotzdem Java zu nutzen) über JNI oder JNA oder du schreibst es gleich komplett in Java.

Die Ursache, warum es nicht geht ist, dass Java per Robot nur etwas bewirken kann, wenn deine Applikation im Vordergrund ist.
 
Zuletzt bearbeitet:
Ähm es war wohl etwas spät. Ich meinte natürlich nicht "oder du schreibst es komplett in Java" sondern "oder du schreibst es komplett in C/C++"
Eine andere Idee wäre auchnoch AutoIt, ich habe gehört, dass damit soetwas recht einfach geht. Das Script könntest du dann per Java aufrufen.
 
ja hab ich mir gedacht das du das so meinst^^

Ich hab nur leider keinen Schimmer von C++ hab im internet gefunden das man mit C++ auf diesem Weg einen Mausklick simuliert

Java:
int Mausklick(int x, int y)
{
   SetCursorPos(x,y);
   mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
   mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}

Ist es schwer das mit JNI nun in meinem eclipse auszuführen?
 
Es gibt einige Tutorials wie man per JNI oder JNA (würde dir dann eher letzteres empfehlen, wenn du kein C/C++ kannst) einen Mausklick durchführt.
Bei JNI müsstest du halt erstmal den C Teil kompilieren und diesen dann laden und aufrufen.
Bei JNA musst du nichts mit C machen und du kannst alles in Java schreiben. Die dll's, usw. sind bei JNA dabei und du musst dich darum nicht kümmern. Hier die Seite von jna: https://github.com/twall/jna

Ich kann da leider nicht mehr zu sagen, ich habe bisher nichts mit JNI oder JNA gemacht und würde dafür dann wohl lieber direkt C oder C++ nutzen (letzteres lerne ich gerade).

Bei deinem Quellcodeausschnitt müsste natürlich auch noch die Windows API inkludiert werden. Ich kann dir leider nicht sagen ob das falsch oder richtig ist.
 

Zurück
Oben