使用java.awt.Robot键入字符串

使用java.awt.Robot键入字符串,java,swing,awtrobot,Java,Swing,Awtrobot,我已经知道如何使用java.awt.Robot使用keyPress键入单个字符,如下所示。我怎样才能一次将预定义的字符串值输入到文本框中 robot.keyPress(KeyEvent.VK_1); robot.keyPress(KeyEvent.VK_1); robot.keyPress(KeyEvent.VK_1); // instead, enter String x = "111" 常见的解决方案是使用剪贴板: String text = "Hello World"; String

我已经知道如何使用
java.awt.Robot
使用
keyPress
键入单个字符,如下所示。我怎样才能一次将预定义的
字符串
输入到文本框中

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

常见的解决方案是使用剪贴板:

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);
你需要“键入”角色,这是一个新闻发布动作

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

现在你可以复制粘贴三次,但我只是把它放在一个循环中,你可以在一个字符串中输入值,然后你可以使用这个字符串,就像Eng.Fouad解释的那样。但是使用它没有乐趣,你可以试试这个

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);

您还可以使用Thread.sleep,这样它就可以缓慢地输入数据位。

我认为我已经实现了更好的解决方案,可能有人发现它很有用(主要的方法是从enum KeyCode读取所有值,然后将其放入HashMap,稍后再使用它来查找int key代码)

最后,您可以这样使用它(对于单个字符)
robot.keyPress(charToKey('a').getKeyCode())

如果要按大写字母,则必须同时按住shift键并释放,因为Java 7还可以使用KeyEvent.getExtendedKeyCodeForChar(c)。仅小写的示例可以是:

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);
    }
}

这不会键入整个“字符串”,但有助于一次键入除一个字符以外的任何字符

    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);

       }
Runtime.getRuntime().exec(“notepad.exe”)//或者你想去的任何地方。
睡眠(5000)//虽然不是必需的,但感觉很好。
机器人r=新机器人();
String a=“嗨,我的名字就是你们想说的。”;
字符c;
int d=a.length(),e=0,f=0;

while(e111)只是一个例子。假设我想让它输入
“Hello world”
!谢谢。大写可以很容易地用
字符进行检查。isUpperCase(c)
。我在这里如何处理大写?在什么地方按VK_SHIFT键?你能帮我吗?我想发送一个有大写字母、小字符和特殊字符的字符串。。
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);
    }
}
    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);

       }
    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);

}