2016-08-04 1 views
0

Привет, я хочу написать программу, которая должна написать фразу в другой программе (например, я хочу открыть TextEdit и написать фразу). Я знаю, как открыть другую программунаписать фразу (String) в другой программе с помощью метода робота в java

File file = new File("/Applications/TextEdit.app"); 
Desktop.getdesktop().open(file); 

и я знаю, как нажать на кнопку в клавиатуре с помощью метода робота

Robot robot = new Robot(); 
robot.keypress(KeyEvent.VK_G) 

Как вы можете видеть этот код написать письмо не фразу и большой Проблема заключается в том, что этот метод не поддерживает код ASCII.

, например, если ASCII код «а» 98, когда я пишу 98 в качестве параметра в Robot Митосе

robot.keypress(98); 

распечатать другую букву.

так что я должен сделать, чтобы написать фразу в другой программе с помощью java-кода?

ответ

0

Вот как это можно сделать для данного символа при условии, что ваша ОС Mac OS:

char c = 'a'; 
robot.keyPress(KeyEvent.VK_ALT); 
robot.keyPress(KeyEvent.VK_MINUS); 
robot.keyRelease(KeyEvent.VK_MINUS); 
for (int i = 3; i >= 0; i--) { 
    char current = Integer.toHexString((c & 15 << (4 * i)) >> (4 * i)).charAt(0); 
    int keyCode; 
    switch (current) { 
     case 'a': 
      keyCode = KeyEvent.VK_A; 
      break; 
     case 'b': 
      keyCode = KeyEvent.VK_B; 
      break; 
     case 'c': 
      keyCode = KeyEvent.VK_C; 
      break; 
     case 'd': 
      keyCode = KeyEvent.VK_D; 
      break; 
     case 'e': 
      keyCode = KeyEvent.VK_E; 
      break; 
     case 'f': 
      keyCode = KeyEvent.VK_F; 
      break; 
     case '0': 
      keyCode = KeyEvent.VK_0; 
      break; 
     case '1': 
      keyCode = KeyEvent.VK_1; 
      break; 
     case '2': 
      keyCode = KeyEvent.VK_2; 
      break; 
     case '3': 
      keyCode = KeyEvent.VK_3; 
      break; 
     case '4': 
      keyCode = KeyEvent.VK_4; 
      break; 
     case '5': 
      keyCode = KeyEvent.VK_5; 
      break; 
     case '6': 
      keyCode = KeyEvent.VK_6; 
      break; 
     case '7': 
      keyCode = KeyEvent.VK_7; 
      break; 
     case '8': 
      keyCode = KeyEvent.VK_8; 
      break; 
     case '9': 
      keyCode = KeyEvent.VK_9; 
      break; 
     default: 
      throw new IllegalArgumentException("Unexpected character: " + current); 
    } 
    robot.keyPress(keyCode); 
    robot.keyRelease(keyCode); 
} 
robot.keyRelease(KeyEvent.VK_ALT); 
Смежные вопросы