Hallo Leute,
ich habe eine ziemlich großes Problem und zwar gehts dabei um den java.awt.Robot.
Ich will mit dem Robot Eingaben simulieren und auch abschicken. Daher will ich vor dem Abschicken die Korrektheit überprüfen. Das hatte ich mit Shift+Linksdrücken vor (erst schreiben, dann markieren, kopieren und aus der Zwischenablage vergleichen). Das Problem ist, dass das Shift nicht zu funktionieren scheint. Wenn ich aber nur einen Großbuchstaben screiben will, funzt es.
So genug Fakten, hier erstmal der Code:
Ich hoffe, dass ihr eine Idee habt, warum das nicht funktioniert.
Wenn jemand ne effektivere Idee hat bitte auch posten.
Vielen Dank schonmal :toll:
ich habe eine ziemlich großes Problem und zwar gehts dabei um den java.awt.Robot.
Ich will mit dem Robot Eingaben simulieren und auch abschicken. Daher will ich vor dem Abschicken die Korrektheit überprüfen. Das hatte ich mit Shift+Linksdrücken vor (erst schreiben, dann markieren, kopieren und aus der Zwischenablage vergleichen). Das Problem ist, dass das Shift nicht zu funktionieren scheint. Wenn ich aber nur einen Großbuchstaben screiben will, funzt es.
So genug Fakten, hier erstmal der Code:
Java:
package robot;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.KeyEvent;
public class Webrobbi{
private static Robot r;
public static void use(int i){
r.keyPress(i);
r.keyRelease(i);
}
public static void write(String s){
for(int i = 0; i < s.length(); i++){
use(s.charAt(i));
}
r.keyPress( KeyEvent.VK_SHIFT); //hier funktioniert das Shift
r.keyPress( KeyEvent.VK_H);
r.keyRelease(KeyEvent.VK_SHIFT);
r.keyPress( KeyEvent.VK_H);
}
public static String get(){
Transferable t = null;
boolean done = false;
while(!done){
try{
t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
done = true;
}
catch(Exception e){
}
}
try{
if(t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)){
String text = (String)t.getTransferData(DataFlavor.stringFlavor);
return text;
}
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
public static boolean checkFor(String s){
r.keyPress(KeyEvent.VK_SHIFT); //Dieses Shift wird scheinbar nicht erkannt
for(int i = 0; i < s.length(); i++){
r.keyPress(KeyEvent.VK_LEFT);
r.keyRelease(KeyEvent.VK_LEFT);
}
r.keyRelease(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_C);
r.keyRelease(KeyEvent.VK_CONTROL);
r.keyRelease(KeyEvent.VK_C);
String copy = get();
if(copy.equalsIgnoreCase(s)){
return true;
}
return false;
}
public static void main(String[] args) {
try{
r = new Robot();
Runtime.getRuntime().getRuntime().exec("C:\\Windows\\system32\\notepad.exe");
Thread.sleep(5000); //warten bis die Anwendung gestartet ist
String s = "laskdlaksd";
write(s);
if(checkFor(s)){
System.out.println("true");
}
else{
System.out.println("False");
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
Ich hoffe, dass ihr eine Idee habt, warum das nicht funktioniert.
Wenn jemand ne effektivere Idee hat bitte auch posten.
Vielen Dank schonmal :toll: