+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Globaler KeyListener

  1. #1
    0x2A
    Gast/Guest
    Hallo zusammen,
    ich möchte in Java sämtliche Tastatureingaben auslesen, auch wenn eine andere Anwendung den Focus hat. Im Internet findet man zwar Lösungen über native Methoden, aber dadurch geht eben auch die Plattformunabhängigkeit verloren. Meine Frage ist jetzt, ob sich ein globaler KeyListener auch allein mit Java realisieren lässt (muss ja eigentlich, Swing schafft das schließlich auch, aber der ist eben nicht global), oder ob das nicht möglich ist.

  2. #2
    Global Moderator Viertel Gigabyte
    Registriert seit
    05.08.2008
    Fachbeiträge
    4.967
    Genannt
    325 Post(s)
    Das geht eigentlich nicht. Wie und wo meinst du, dass Swing das "schafft"?

  3. #3
    0x2A
    Gast/Guest
    Der KeyListener von Swing kann ja auch KeyEvents regristieren, und ich bin davon ausgegangen, dass diese global sind, und Swing sie nur dann weiterleitet, wenn die der Frame den Focus hat. Weiß jemand, wie die KeyEvents in Swing empfangen werden? Denn sie müssen ja in irgendeiner Weise von außen empfangen werden.

  4. #4
    User Kilobyte
    Registriert seit
    25.09.2008
    Fachbeiträge
    247
    Genannt
    15 Post(s)
    Zitat Zitat von 0x2A Beitrag anzeigen
    Weiß jemand, wie die KeyEvents in Swing empfangen werden?
    durch native code.

    plattform unabhaengig schaffst du das nicht

  5. #5
    Frequent User Megabyte
    Registriert seit
    01.08.2013
    Fachbeiträge
    1.741
    Genannt
    114 Post(s)
    Auch mit native-Code ist das nicht ganz trivial (und stellt auch ein Sicherheitsrisiko dar: Keylogger). Wenn ich mich recht entsinne, muss man die Win32-API-Funktion SetWindowsHookEx verwenden.
    Für globale Hooks gilt allerdings:
    The global hooks are a shared resource, and installing one affects all applications in the same desktop as the calling thread. All global hook functions must be in libraries. Global hooks should be restricted to special-purpose applications or to use as a development aid during application debugging.
    Swing wird nicht global alle Tastenanschläge abfangen, sondern ebenfalls nur die Windows-Messages auswerten, die an den Prozess mit den GUI-Komponenten gesendet werden.

    *** Edit ***

    Kurze Recherche ergab folgendes: https://github.com/kwhat/jnativehook
    Sieht auf den ersten Blick so aus, als wenn es die komplizierte Arbeit kapselt und weitestgehende Plattformunabhängigkeit ermöglicht.

  6. #6
    User Floppy Disc Avatar von Sen-Mithrarin
    Registriert seit
    26.10.2013
    Fachbeiträge
    758
    Genannt
    63 Post(s)
    Zitat Zitat von 0x2A Beitrag anzeigen
    Meine Frage ist jetzt, ob sich ein globaler KeyListener auch allein mit Java realisieren lässt [...].
    Kurz: nein!
    Grund: Java ist bewusst Plattform-unabhängig. Die Verarbeitung von Eingaben ist aber eine Plattform-abhängige Aufgabe des jeweiligen OS-Event-(Bus)-Systems - und das geht nur mit native-code.
    Biskuit ... das is' glaub ich fast so 'ne Suppe
    ein vergruseltes 2016 und so ...
    "Darf ich dir noch was anbieten?" - "Du meinst außer Steaks, Bier, Kippen und nen Lapdance?"

  7. #7
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    319
    Genannt
    34 Post(s)
    Ooooder... man macht eine transparente Swing Vollbild Anwendung die Tastatur und Mauseingaben per Robot-Klasse weiterleitet an das darunter liegende Framework nach Abfang weiterleitet.
    Über letzteres müsste man über verschiedene Möglichkeiten nachdenken.
    Es wäre nicht perfekt, aber durchaus machbar.

    Bei Hardwarezugriff gäbe es noch andere Möglichkeiten wenn man mal ein bisschen out-of-the-box denkt. Bevor ich aber gegen jegliche Forenregeln verstoße bin ich auch schon wieder weg.
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  8. #8
    User Kilobyte
    Registriert seit
    08.01.2016
    Fachbeiträge
    106
    Genannt
    1 Post(s)
    https://forum.byte-welt.net/java-for...diatasten.html

    Wahrscheinlich das naheliegendste für dich. Ist native-code, aber liefert einige libs für die meisten Betriebssysteme mit, so dass es dort läuft.

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

Das Gegenteil von hart ist ... ?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Globaler KeyHook für Mediatasten
    Von Darse im Forum Allgemeine Themen
    Antworten: 14
    Letzter Beitrag: 31.03.2016, 12:54
  2. KeyListener '@'/ ALT GR
    Von vfl_freak im Forum Java-Grundlagen
    Antworten: 12
    Letzter Beitrag: 28.09.2014, 00:37
  3. (Events) Systemweiter Keylistener?
    Von Gossi im Forum AWT, Swing, JavaFX & SWT
    Antworten: 9
    Letzter Beitrag: 21.02.2014, 17:08
  4. KeyListener
    Von Zombiepriester im Forum Java-Grundlagen
    Antworten: 22
    Letzter Beitrag: 01.12.2013, 18:42
  5. Antworten: 0
    Letzter Beitrag: 19.03.2008, 14:34

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •