Input/Output Robot Tastenereignisse

HimBromBeere

Top Contributor
Malzzeit,

wie in meinem letzten Beitrag hier versprochen, mach ich für mein Anliegen mal einen eigenen Beitrag auf. Es geht einfach nur um die Verwendung von Robot zur Steuerung eines Programmes mit Tastenereignissen. Woher weiß dieses Programm, dass es mit dem Robot gemeint ist, oder anders ausgedrückt: wie hänge ich die Tastenereignisse jetzt in der Ereignisskette an eben diese Anwendung?

Folgendes hab ich dazu mal testweise geschrieben:

Java:
try {
	final Robot r = new Robot();
			
	
	JButton btn1 = new JButton("übertragen");
	btn1.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			r.mouseMove(500, 400);
			r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
			r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
			r.keyPress(KeyEvent.VK_ENTER);
			r.keyRelease(KeyEvent.VK_ENTER);
			
		}
	});
	JFrame frame = new JFrame();
	frame.add(btn1);
	
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.pack();
	frame.setVisible(true);
	
	
} catch (AWTException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

Das geht soweit auch, aber irgendwie sieht´s besch*** aus :D

Achja, das mit der Maustaste sieht mir sehr supekt aus, ursprünglcih hab ich da
Code:
MouseEvent.Button1
stehen gehabt, aber da flog mir eine
Code:
java.lang.IllegalArgumentException: Invalid combination of button flags
um die Ohren... Sollte ein einfacher Links-Klick wirklich so einem seltsamen Ereignis entsprechen (ich meine dieses InputEvent.BUTTON!_DOWN_MASK)?
 
Zuletzt bearbeitet:
F

FocusRobot

Gast
Grundsätzlich arbeitet die Robot-Klasse wie deine ganz normalen Input-Geräte. Und auf diese reagiert nun mal nur genau das Programm was gerade den Focus hat. Und genau so ist es auch mit der Robot-Klasse. Wenn du also nicht zufällig ein Programm hast was globale Hotkeys verwendet (um mal auf das Lieblingsthema in dieser Richtung anzuspielen) musst du also erstmal dafür sorgen das die Ziel-Anwendung auch den Focus bekommt, was ja nun mal in der Regel durch das "Anklicken" geschiet. Eine Möglichkeit einem Bestimmten Prozess dierekt irgendwelche "Events" zukommen zu lassen kann ich mir nur mit native-Code vorstellen. Also musst du entweder selbst für den Focus sorgen (in dem du z.B. ein sleep einbaust und nach drücken auf den Button dann die Ziel-Anwendung selbst in den Focus holst) oder versuchst mit irgendwelchen Mouse-Coords und einem Klick es durch Robot machen zu lassen.
 

HimBromBeere

Top Contributor
Jut, hab ich also richtig gedacht. Vielen Dank.

Das Thema globale Hotkeys höre ich auch immer mal wieder, ich kann mir gar nicht vorstellen, warum das sooo eine grpße Faszination auf gewisse Nutzer hat (ich will niemanden ausspinoieren, ist nur ´ne Übung :lol:)
 

Ähnliche Java Themen

Neue Themen


Oben