Java=>;缩短机器人的指令

Java=>;缩短机器人的指令,java,input,automation,awtrobot,Java,Input,Automation,Awtrobot,嘿,使用下面的代码片段: try { Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_H); robot.keyRelease(KeyEvent.VK_H); robot.keyPress(KeyEvent.VK_A); robot.keyRelease(KeyEvent.VK_A); robot.keyPress(KeyEvent.VK_L); r

嘿,使用下面的代码片段:

try {

      Robot robot = new Robot();

      robot.keyPress(KeyEvent.VK_H);
      robot.keyRelease(KeyEvent.VK_H);
      robot.keyPress(KeyEvent.VK_A);
      robot.keyRelease(KeyEvent.VK_A);
      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);

 } catch (AWTException e) {
      e.printStackTrace();
 }
我得到这个结果:

hallo
但有没有办法缩短这一过程?e、 g.类似于:

try {

       Robot robot = new Robot();

       String  word = "hallo";

       // something like:
       robot.keyPress(KeyEvent.word);

   } catch (AWTException e) {
       e.printStackTrace();
   }
我知道这个例子不起作用,但我找不到任何关于这个的文档


你有什么想法吗?问候和感谢

如果您使用的是Java 7,那么您可以使用该方法从字符中获取密钥代码:

   import java.awt.event.KeyEvent; 

   [...]

   public static void type(Robot robot, String word) {
        for (int i = 0; i < word.length(); i++) {
            int keyCode = KeyEvent.getExtendedKeyCodeForChar(word.charAt(i));
            robot.keyPress(keyCode);
            robot.keyRelease(keyCode);
        }
    }

   [...]

   Robot robot = new Robot();
   type(robot, "hallo");
import java.awt.event.KeyEvent;
[...]
公共静态无效类型(机器人、字符串字){
for(int i=0;i
制作一个这样的方法。只需使用获取字符的方法

public void press(String s, Robot r)
{
    for (char ch : s.toCharArray())
    {
        if (Character.isUpperCase(ch))
            r.keyPress(KeyEvent.VK_SHIFT);

        r.keyPress(Character.toUpperCase(ch));
        r.keyRelease(Character.toUpperCase(ch));
    }
}
或者你可以用这个来获取钥匙码

KeyStroke.getKeyStroke(ch, 0).getKeyCode();
或者也

KeyEvent.getExtendedKeyCodeForChar(ch);

希望这有帮助。

您可以创建一个方法,该方法接受字符输入,计算出传递的字母,然后键入给定的字符。这将是更多的代码比这,但它将少硬编码。请参见示例。您的问题的答案为[此处][1]。[1] :方法已提供。您忘记了释放班次key@user902383按下任何其他键后,Shift将自动释放。要为“KeyEvent.getExtendedKeyCodeForChar(ch);”导入什么?@user3297073您需要使用Java 1.7 JDK才能正常工作。否则,使用上述方法,它们甚至可以与1.6ok thx一起工作,但是我必须为“getExtendedKeyCodeForChar”导入什么,否则该方法对于类型keyevent:/?
import java.awt.event.keyevent
就足够了:
getExtendedKeyCodeForChar
是类
keyevent
中的静态方法。如果您遇到“method is not defined”(方法未定义)错误,那么我猜您使用的是Java 6或更早版本,您应该使用另一个答案。因此,我应该使用Java 7 yea?如果您可以,那么请务必升级到我安装的Java 7.yea,但我无法从我的项目中更改“执行环境”(最新版本仍然是“Java Se 6”),您知道为什么吗?(使用eclipse)