Робот Java не печатает @ - PullRequest
       11

Робот Java не печатает @

0 голосов
/ 21 февраля 2019

эй, я хочу создать свой собственный автоматический вход для электронной почты и CO, как упражнение, потому что я все еще новичок.Я использую Java-робота для этого, и так как я знаю, что в нем нет всех специальных символов, я хочу поймать некоторых из них до того, как робот их получит.Я тоже так делаю (я думаю). Но я всегда получаю ошибку «Неверный код ключа».У кого-нибудь есть совет?И я использую немецкий keybord

import java.io.IOException;
import java.awt.*;
import java.awt.event.*;

    public class Login {

        public static void main (String [] args) {
    /*  args 0 is for the website
        args 1 is for the email adresse
        args 2 is for the password
        */
        try {
//            Process p1= Runtime.getRuntime().exec("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\"");
              Process p1= Runtime.getRuntime().exec("\"C:\\ProgramFiles \\Notepad++\\notepad++.exe\""); // i use notepad here for testing
              Thread.sleep(100);    

              write(args[0]);
              Thread.sleep(300);

              write(args[1]);
              Thread.sleep(300);

              write(args[2]);

//              p1.destroy();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }



    public static void write(String s)
    {
      try
      {
        Robot r = new Robot();
        int i = 0;
        char[] buchstaben = s.toCharArray();
        String AT = "@";


        while (i<s.length())
        {
          System.out.println("KeyEvent ist: "+ buchstaben[i]);

          if((String.valueOf(buchstaben[i]).contains(AT))==true)
          {

              r.keyPress(KeyEvent.VK_AT);
//            r.keyPress(KeyEvent.VK_ALT_GRAPH);
//            r.keyPress('Q');
              r.delay(250);
              r.keyRelease(KeyEvent.VK_AT);
//            r.keyRelease(KeyEvent.VK_ALT_GRAPH);
//            r.keyRelease(KeyEvent.VK_Q);
              i++;
          }


          if(Character.isUpperCase(buchstaben[i]))
          {
             r.keyPress(KeyEvent.VK_SHIFT);
          }
          synchronized(r)
          {

            r.keyPress(Character.toUpperCase(buchstaben[i]));
            r.delay(250);
            r.keyRelease(Character.toUpperCase(buchstaben[i]));
          }
          if(Character.isUpperCase(buchstaben[i]))
          {
             r.keyRelease(KeyEvent.VK_SHIFT);
          }
          i++;
        }

        r.keyPress(KeyEvent.VK_ENTER);
        r.delay(250);
        r.keyRelease(KeyEvent.VK_ENTER);
      }
      catch(AWTException e)
      {
        System.err.println(e);
      }
    }


}

Исключение в потоке "main" java.lang.IllegalArgumentException: Неверный код ключа

at sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.awt.Robot.keyPress(Robot.java:354)
at Login.write(Login.java:53)
at Login.main(Login.java:21)
...