KeyLogger

florian1995

Aktives Mitglied
ich kapier das einfach nicht.
ich will bloß für den anfang abfragen ob enter gedrückt ist.
ich hätte das so gemacht:
Java:
while!(keyPressed(KeyEvent.VK_ENTER)){
  
}
Hier wartet das Programm bis enter gedrückt wird?!
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Du musst schon etwas genauer erklären was du vor hast....Wenn du Tastaturereignisse auch wahrnehmen willst ohne dass dein Programm den Fokus hat, geht das mit reinem Java nicht und du musst auf native Bibs (siehe Link von Sempah) ausweichen.
 

Schandro

Top Contributor
while!(keyPressed(KeyEvent.VK_ENTER)){

}
das ist unsinn, so funktioniert das net.

Z.b. bei den oben geposteten GlobalKeyListener ist es so, das bei jeden Tastendruck ein Event passiert. Auf dieses reagierst du dann in deiner KeyListener-Instanz. Wenn du also auf einen bestimmten Tastendruck warten willst, müsstest du an der Stelle im Code auf ein bestimmtes Object wait() aufrufen und im KeyListener wenn diese Taste gedrückt wurde auf das selbe Object notifyAll()
 

eRaaaa

Top Contributor
Java:
	Scanner s = new Scanner(System.in);
	s.nextLine();
	System.out.println("Es wurde ENTER gedrückt");

:lol: (*sry*)
 

florian1995

Aktives Mitglied
ja so weiß ich auch dass das geht aber ich möchte keyevents begreifen und da ist mir das Beispiel eingefallen. bitte schreib mir das mit einem Keyevent.
 

Schandro

Top Contributor
weil heute ein guter Tag is...

Java:
	static {
		try {
			System.loadLibrary("GlobalKeyLogger");
		} catch (UnsatisfiedLinkError ule) {
			System.load(new File("lib\\GlobalKeyLogger.dll").getAbsolutePath());
		}
	}

	
	public static void main(String[] args) throws AWTException {
		final Object obj = new Object();
		GlobalKeyLogger gkl = new GlobalKeyLogger();
		gkl.addGlobalKeyListener(new GlobalKeyListener() {
			@Override
			public void keyPressed(GlobalKeyEvent event) {
				if(event.getConverted().equals("[F5]")){
					synchronized (obj) {
						obj.notifyAll();						
					}
				}					
			}
		});
		gkl.setConverter(new GermanKeyboardConverter());
		gkl.startListening();
		
		System.out.println("Berechne...");
		int e=-321;
		for(int i=0;i<200;++i){
			e *= i;
		}
		System.out.println("Drueck F5 um das Ergebniss anzuzeigen");
		try {			
			synchronized (obj) {
				obj.wait();
			}
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}
		System.out.println("Ergebnis="+e);
	}
Ich habs mit F5 statt Enter gemacht, weil bei mir das Enter-Event fast nie ankommt. Als Bibliothek msuste natürlich den oben geposteten GlobalKeyListener in den Class-Path einbinden..
 

eRaaaa

Top Contributor

florian1995

Aktives Mitglied
danke für die links.
ich programmiere ja auch erst etwas über ein halbes jahr in der schule und habe keine ahnung von klassen. *SRY*
bin der klassenbeste und habe auch schon 2 dinge mit der klasse robot programmiert und dachte dass wäre ca. ähnlich
 
S

SlaterB

Gast
> Ich glaube dir fehlt einfach das Verständnis was ein KeyEvent ist oder allgemein was Events sind!

und vielleicht auch schon was ein ClashPath, try/ catch, ein Listener an sich oder eine anonyme innere Klasse ist,
für ein einfaches main-Programm zwischen String- und int-Variablen ist das bisher eben nicht weit genug vereinfacht
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben