Hi,
ich möchte außerhalb der erstellten Java Gui Mausbewegungen und Klicks registrieren.
Mit dem JAR File von ksquared klappt das auch gut Java
Per Button auf meiner Gui starte ich die Erfassung. Nur das Problem ist, ich weiß nicht wie sie stoppen kann. Momentan läuft es ewig und mit
wird alles beim beenden des Fensters einfach abgewürgt (?) Verbleibt dann nichts mehr "Schädliches" zurück?
Vorweg, der gesamte Code steht auch auf der Webseite, den betreffenden Teil habe ich kaum verändert.
Genau so wie es einen .addMouseLisener gibt, habe ich auch einen .removeMouseListener entdeckt. Nun müsste es damit doch möglich sein den eben gesetzten Listener wieder zu entfernen? Erstelle ich einen neuen MouseListener mit new? Und wie übergebe ich ihm denn keinen new MouseAdapter sondern den schon verwendeten?
Hier noch die anderen Klassen, der Übersicht halber, es gibt noch mehr aber ich denke die sind nicht wichtig für mein Problem.
ich möchte außerhalb der erstellten Java Gui Mausbewegungen und Klicks registrieren.
Mit dem JAR File von ksquared klappt das auch gut Java
Per Button auf meiner Gui starte ich die Erfassung. Nur das Problem ist, ich weiß nicht wie sie stoppen kann. Momentan läuft es ewig und mit
Java:
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Vorweg, der gesamte Code steht auch auf der Webseite, den betreffenden Teil habe ich kaum verändert.
Java:
public static void mausk() {// wird bei Buttondruck ausgeführt
new GlobalMouseListener().addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent event) {
// auszuführender code }
@Override
public void mouseReleased(MouseEvent event) { }
@Override
public void mouseMoved(MouseEvent event) {
//auszuführender code }
});
Genau so wie es einen .addMouseLisener gibt, habe ich auch einen .removeMouseListener entdeckt. Nun müsste es damit doch möglich sein den eben gesetzten Listener wieder zu entfernen? Erstelle ich einen neuen MouseListener mit new? Und wie übergebe ich ihm denn keinen new MouseAdapter sondern den schon verwendeten?
Hier noch die anderen Klassen, der Übersicht halber, es gibt noch mehr aber ich denke die sind nicht wichtig für mein Problem.
Java:
package MouseHook.src.MouseHook.de.ksquared.system.mouse;
import java.util.List;
import java.util.Vector;
public class GlobalMouseListener {
protected PoolHook hook;
public GlobalMouseListener() { (hook=new PoolHook(this)).start(); }
protected List<MouseListener> listeners = new Vector<MouseListener>();
public void addMouseListener(MouseListener listener) { listeners.add(listener); }
public void removeMouseListener(MouseListener listener) { listeners.remove(listener); }
void mouseMoved(MouseEvent event) {
try {
for(MouseListener listener:listeners)
listener.mouseMoved(event);
} catch(Exception e) { e.printStackTrace(); }
}
void mousePressed(MouseEvent event) {
try {
for(MouseListener listener:listeners)
listener.mousePressed(event);
} catch(Exception e) { e.printStackTrace(); }
}
void mouseReleased(MouseEvent event) {
try {
for(MouseListener listener:listeners)
listener.mouseReleased(event);
} catch(Exception e) { e.printStackTrace(); }
}
}
Java:
package MouseHook.src.MouseHook.de.ksquared.system.mouse;
public class MouseAdapter implements MouseListener {
@Override public void mouseMoved(MouseEvent event) {}
@Override public void mousePressed(MouseEvent event) {}
@Override public void mouseReleased(MouseEvent event) {}
}
Java:
package MouseHook.src.MouseHook.de.ksquared.system.mouse;
import java.util.EventListener;
public interface MouseListener extends EventListener {
public void mouseMoved(MouseEvent event);
public void mousePressed(MouseEvent event);
public void mouseReleased(MouseEvent event);
}