# Maus-Klick abfragen



## JKostiK (2. November 2006)

Hallo!
Wie kann ich abfragen, ob die Maustaste (linke Maustaste, Klick) betätigt wurde. Je einfacher und simpler euer Lösungsvorschlag desto dankbarer bin ich   DANKE...


----------



## BabyMitSchnully (2. November 2006)

Schau dir mal den MouseListener an. Damit solltest du weiter kommen.

http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html

Ist zwar Englisch, aber man kann es verstehen ;-)


----------



## JKostiK (2. November 2006)

Ist die Erkennung Global, also auch ausserhalb meines Java Fensters?


----------



## BabyMitSchnully (2. November 2006)

Das hört sich fast so an, als wolltest du ein Programm schreiben, welches Mausklicks zählt. 

Soll dein Programm im Hintergrund laufen können? 

Der MouseListener funktioniert glaube ich nur, wenn das Fenster aktiv ist.

Gruß
Chris


----------



## JKostiK (2. November 2006)

Also mein Fenster kann ruhig im Vordergrund/offen sein. Der Mausklick soll aber auch ausserhalb des Fensters erkannt werden.
PS: Mein Java Programm soll ein anderes Programm über die Maus bedienen/steuern.


----------



## BabyMitSchnully (2. November 2006)

Das wollte ich wissen. Dann kommst mit dem MouseListener nicht weiter.

Dann brauchst was anderes. Was weiß ich aber ehrlich gesagt nicht. In C++ geht es über die API. Da kannst über die sogenannten Callback funktionen diese klicks abfangen.

Gruß
Chris

Nachtrag : Hab noch mal ein wenig gewühlt. Schau dir das mal an. 

http://www.javaworld.com/javaworld/javatips/jw-javatip10.html


----------



## JKostiK (2. November 2006)

Danke Dir! Ist wohl nicht so einfach wie ich dachte!?


----------



## ChrizZel (20. Januar 2011)

Ich weiß ist ein altes Thema aber es heißt ja immer nehmt die SFU.

Also ich möchte ein Java tool schreiben (lieber wäre mir ohne jegliche Oberfläche am besten nur im Tray). welches folgende Aufgabe hat, wenn ich mit der linken Maustaste klicke soll solange ich diese gedrückt habe hintereinander dauerhaft in einer Schleife Klicks ausgeführt werden. Und diese Funktion soll man mit der Feststell Taste ein und aus schalten können.

Das mit der Schleife ist ja kein ding also ich dachte mir das unfefähr so:

```
public static void Mausklickmethode() {

  if(CapslockActive()){

        if(LinkeMaustasteGedrückt()){
           while(1==1){
             klickeMaus();
           }
        }else{
           Mausklickmethode();
        }
  }else{
   Mausklickmethode();
  }

}
```

wäre nett wenn ihr mir da nochmal helft das mit dem listener find ich iwie nen bisschen viel kann doch nicht sein das ich für die rechte maustaste gleich nen ganzen listner brauche!


HABE DAS HIER GEFUNDEN: SwingUtilities.isLeftMouseButton(MouseEvent anEvent)
kann man damit was anfangen?


----------



## Matt297 (20. Januar 2011)

Hi, so wie ich das sehe ist es nur in Java nahezu unmöglich einen Mausklick ausserhalb des eigenen Fensters zu erfragen. Denn:

Bei einem Mausklick läuft es so ab, dass das Betriebsystem den erstmal empfängt und dann guckt für welches Fenster der denn gedacht ist und dann weiterleitet und dadurch wird dann zum Beispiel ein eventuell gesetzter MouseListener in Java benachrichtigt.

Das was ihr wollt, ist aber schon wenn der Klick beim OS reinkommt, den abfangen und die Parameter(Koordinaten, ...) auslesen, das geht aber nur, wenn man auf Betriebssystem-Ebene eingreifen kann, das wäre z.B. mit C möglich. 
Mit Java aber "dank" des Designs der JVM nicht, sprich es ist so gewollt.
Die einzige Möglichkeit, die ich sehe, wäre eine native Methode zu definieren, die dann mit C oder einer ähnlichen Sprache zu implementieren und dann aufzurufen, was aber sehr aufwendig ist, da man dann immer, wenn man sein Programm weitergeben will, die Bibliotheken mitliefern muss und man für jedes OS neu kompilieren muss, etc.
Daher würde ich raten, dass man einfach von vornherein zu einer anderen Programmiersprache wechselt, da Java dafür einfach nicht geeignet und auch nicht für solche Zwecke entwickelt wurde.

Ach ja: SwingUtilities.isLeftMouseButton(MouseEvent anEvent) ist dafür da um bei einem gegebenen MouseEvent-Objekt zu überprüfen ob die linke Maustaste gedrückt wurde. Und ein MouseEvent-Objekt hat man nur, wenn man einen MouseListener auf ein eigenes Fenster gesetzt hat.

Gruß
Matt


----------



## ChrizZel (20. Januar 2011)

also erstmal vielen dank für deine Antwort =D 
also ich wollte diese Programm schon in gewissermaßen Fensterorientiert nutzen, nur das Problem ist das die Anwendungen wechseln könnten. Okay ich kann ja einfach mal sagen wofür ich es gerne verwenden möchte. Das Tool sollte Anwendung in Spielen finden z.B. bei Ego-shootern das man mit der Pistole nicht dauerhaft klicken muss sondern einfach gedrückt hält oder man halb-automatik zu voll-automatk macht =D.
Ich habe von einem Kollegen schon einmal ein selbstgeschriebenes bekommen welches aber leider nur für ein spiel galt. Er hatte später noch eins geschrieben für alle Anwendungen in etwa so wie ich es beschrieben hatte nur leider hatte das Programm fehler (meine Tastatur zickte öfters mal rumm) und ich habe es verloren beim letzten festplattencrash. Das erste habe aber noch, dieses funtioniert auch hervorragend nur kann ich es ja leider nicht öffnen und für eine andere Anwendung eintragen oder?


----------

