vk_back_space metodos docs clase java swing awtrobot

metodos - keyevent java docs



Escribe una cadena usando java.awt.Robot (7)

Creo que he implementado un mejor alma, tal vez alguien lo encontró útil (el enfoque principal es leer todos los valores de enumeración KeyCode y luego ponerlo en un HashMap y usarlo más adelante para encontrar un código de clave int)

public class KeysMapper { private static HashMap<Character, Integer> charMap = new HashMap<Character, Integer>(); static { for (KeyCode keyCode : KeyCode.values()) { if (keyCode.impl_getCode() >= 65 && keyCode.impl_getCode() <= 90){ charMap.put(keyCode.getName().toLowerCase().toCharArray()[0], keyCode.impl_getCode()); } else{ charMap.put(keyCode.getName().toLowerCase().toCharArray()[0], keyCode.impl_getCode()); } } } public static Key charToKey(char c){ if(c>=65 && c<=90){ return new Key(charMap.get(c), true); } else { return new Key(charMap.get(c), false); } } public static List<Key> stringToKeys(String text){ List<Key> keys = new ArrayList<Key>(); for (char c : text.toCharArray()) { keys.add(charToKey(c)); } return keys; }

También creé una clase clave para saber si escribir un carácter en mayúsculas o minúsculas:

public class Key { int keyCode; boolean uppercase; //getters setter constructors}

y finalmente puedes usarlo así (para un solo carácter) robot.keyPress(charToKey(''a'').getKeyCode()); Si desea presionar una mayúscula, debe presionar y soltar simultáneamente con la tecla Mayús

Ya sé cómo usar java.awt.Robot para escribir un solo carácter usando keyPress , como se ve a continuación. ¿Cómo puedo simplemente ingresar un valor de String predefinido completo a la vez en un cuadro de texto?

robot.keyPress(KeyEvent.VK_1); robot.keyPress(KeyEvent.VK_1); robot.keyPress(KeyEvent.VK_1); // instead, enter String x = "111"


Debe "escribir" el carácter, que es una acción de presionar Y liberar ...

robot.keyPress(KeyEvent.VK_1); robot.keyRelease(KeyEvent.VK_1);

Ahora puedes copiarlo y pegarlo tres veces, pero lo pondría en un bucle


Desde Java 7 también puedes usar KeyEvent.getExtendedKeyCodeForChar (c). Un ejemplo solo para minúsculas podría ser:

void sendKeys(Robot robot, String keys) { for (char c : keys.toCharArray()) { int keyCode = KeyEvent.getExtendedKeyCodeForChar(c); if (KeyEvent.CHAR_UNDEFINED == keyCode) { throw new RuntimeException( "Key code not found for character ''" + c + "''"); } robot.keyPress(keyCode); robot.delay(100); robot.keyRelease(keyCode); robot.delay(100); } }


Esto no escribe toda la "cadena", pero ayuda a escribir lo que quieras que no sea un carácter a la vez.

Runtime.getRuntime().exec("notepad.exe");//or anywhere you want. Thread.sleep(5000);//not required though gives a good feel. Robot r=new Robot(); String a="Hi My name is Whatever you want to say."; char c; int d=a.length(),e=0,f=0; while(e<=d) { c=a.charAt(e); f=(int) c; //converts character to Unicode. r.keyPress(KeyEvent.getExtendedKeyCodeForChar(f)); e++; Thread.sleep(150); }

¡Mira que funciona perfectamente y es increíble! Aunque no funciona con caracteres especiales que no pueden ser rastreados por unicode como |,! ... etc.


La solución común es usar el portapapeles:

String text = "Hello World"; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL);


Puede ingresar un valor en una cadena y luego puede usar esa cadena como se explica en Eng.Fouad. Pero no es divertido usarlo, puedes intentarlo

Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_H); robot.keyRelease(KeyEvent.VK_H); robot.keyPress(KeyEvent.VK_E); robot.keyRelease(KeyEvent.VK_E); robot.keyPress(KeyEvent.VK_L); robot.keyRelease(KeyEvent.VK_L); robot.keyPress(KeyEvent.VK_L); robot.keyRelease(KeyEvent.VK_L); robot.keyPress(KeyEvent.VK_O); robot.keyRelease(KeyEvent.VK_O);

y también puede usar Thread.sleep para que pueda ingresar el bit de datos lentamente.


StringSelection path = new StringSelection("path of your document "); // create an object to desktop Toolkit tol = Toolkit.getDefaultToolkit(); // get control of mouse cursor Clipboard c = tol.getSystemClipboard(); // copy the path into mouse c.setContents(path, null); // create a object of robot class Robot r = new Robot(); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); r.keyRelease(KeyEvent.VK_V); r.keyPress(KeyEvent.VK_ENTER); r.keyRelease(KeyEvent.VK_ENTER); }