2014-11-10 16 views
0

Я хочу, чтобы autologin для любого настольного приложения, такого как Lotus, Outlook или любые другие приложения (, которому требуется аутентификация пользователя) с использованием Java.Приложение для автоматического входа в систему с использованием java

Пусть говорим, что я хочу авто входа в рабочего стола Skype приложения с помощью программы Java мы то есть открыть Skype.exe & предоставит информацию для аутентификации (имя пользователя, пароль) в качестве параметров.

Во время поиска я узнал, что у нас есть Robot API, поэтому я пытался с ним сделать это ниже.

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.InputEvent; 
import java.awt.event.KeyEvent; 
import static java.awt.event.KeyEvent.*; 

public class RobotExp { 
    Robot robot = new Robot(); 

    public static void main(String[] args) { 
     try { 
      // Process process = new ProcessBuilder(
      // "C:\\Windows\\System32\\notepad.exe").start();//C:\SmartClientCache\Apps\Ellie 
      // Mae\Encompass 

      Process process = new ProcessBuilder(
        "C:\\Program Files (x86)\\Skype\\Phone\\Skype.exe").start(); 
      new RobotExp(); 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

    public RobotExp() throws AWTException { 
     robot.delay(1200); 
     // robot.keyPress(KeyEvent.VK_TAB); 
     // robot.delay(200); 
     type("testaccess"); 
     // robot.setAutoDelay(40); 
     // robot.setAutoWaitForIdle(true); 
     // 
     // robot.delay(4000); 
     // robot.mouseMove(40, 130); 
     // robot.delay(500); 
     // 
     robot.keyPress(KeyEvent.VK_TAB); 

     type("[email protected]"); 
     // robot.delay(200); 
     robot.keyPress(KeyEvent.VK_ENTER); 
     // type("wish is your"); 
     // robot.delay(500); 
     // leftClick(); 
     // 
     // robot.delay(500); 
     // type("Hello, world"); 
     // 
     // robot.mouseMove(40, 160); 
     // robot.delay(500); 
     // 
     // leftClick(); 
     // robot.delay(500); 
     // leftClick(); 
     // 
     // robot.delay(500); 
     // type("This is a test of the Java Robot class"); 
     // 
     // robot.delay(50); 
     // type(KeyEvent.VK_DOWN); 
     // 
     // robot.delay(250); 
     // type("Four score and seven years ago, our fathers ..."); 
     // 
     // robot.delay(1000); 
     System.exit(0); 
    } 

    // private void leftClick() { 
    // robot.mousePress(InputEvent.BUTTON1_MASK); 
    // robot.delay(200); 
    // robot.mouseRelease(InputEvent.BUTTON1_MASK); 
    // robot.delay(200); 
    // } 

    // private void rightClick() { 
    // robot.mousePress(InputEvent.BUTTON2_MASK); 
    // robot.delay(200); 
    // robot.mouseRelease(InputEvent.BUTTON2_MASK); 
    // robot.delay(200); 
    // } 

    // private void type(int i) { 
    // robot.delay(40); 
    // robot.keyPress(i); 
    // robot.keyRelease(i); 
    // } 

    // private void type(String s) { 
    // byte[] bytes = s.getBytes(); 
    // for (byte b : bytes) { 
    // int code = b; 
    // // keycode only handles [A-Z] (which is ASCII decimal [65-90]) 
    // if (code > 96 && code < 123) 
    // code = code - 32; 
    // robot.delay(40); 
    // robot.keyPress(code); 
    // robot.keyRelease(code); 
    // } 
    // } 

    public void type(CharSequence characters) { 
     int length = characters.length(); 
     for (int i = 0; i < length; i++) { 
      char character = characters.charAt(i); 
      type(character); 
     } 
    } 

    public void type(char character) { 
     switch (character) { 
     case 'a': 
      doType(VK_A); 
      break; 
     case 'b': 
      doType(VK_B); 
      break; 
     case 'c': 
      doType(VK_C); 
      break; 
     case 'd': 
      doType(VK_D); 
      break; 
     case 'e': 
      doType(VK_E); 
      break; 
     case 'f': 
      doType(VK_F); 
      break; 
     case 'g': 
      doType(VK_G); 
      break; 
     case 'h': 
      doType(VK_H); 
      break; 
     case 'i': 
      doType(VK_I); 
      break; 
     case 'j': 
      doType(VK_J); 
      break; 
     case 'k': 
      doType(VK_K); 
      break; 
     case 'l': 
      doType(VK_L); 
      break; 
     case 'm': 
      doType(VK_M); 
      break; 
     case 'n': 
      doType(VK_N); 
      break; 
     case 'o': 
      doType(VK_O); 
      break; 
     case 'p': 
      doType(VK_P); 
      break; 
     case 'q': 
      doType(VK_Q); 
      break; 
     case 'r': 
      doType(VK_R); 
      break; 
     case 's': 
      doType(VK_S); 
      break; 
     case 't': 
      doType(VK_T); 
      break; 
     case 'u': 
      doType(VK_U); 
      break; 
     case 'v': 
      doType(VK_V); 
      break; 
     case 'w': 
      doType(VK_W); 
      break; 
     case 'x': 
      doType(VK_X); 
      break; 
     case 'y': 
      doType(VK_Y); 
      break; 
     case 'z': 
      doType(VK_Z); 
      break; 
     case 'A': 
      doType(VK_SHIFT, VK_A); 
      break; 
     case 'B': 
      doType(VK_SHIFT, VK_B); 
      break; 
     case 'C': 
      doType(VK_SHIFT, VK_C); 
      break; 
     case 'D': 
      doType(VK_SHIFT, VK_D); 
      break; 
     case 'E': 
      doType(VK_SHIFT, VK_E); 
      break; 
     case 'F': 
      doType(VK_SHIFT, VK_F); 
      break; 
     case 'G': 
      doType(VK_SHIFT, VK_G); 
      break; 
     case 'H': 
      doType(VK_SHIFT, VK_H); 
      break; 
     case 'I': 
      doType(VK_SHIFT, VK_I); 
      break; 
     case 'J': 
      doType(VK_SHIFT, VK_J); 
      break; 
     case 'K': 
      doType(VK_SHIFT, VK_K); 
      break; 
     case 'L': 
      doType(VK_SHIFT, VK_L); 
      break; 
     case 'M': 
      doType(VK_SHIFT, VK_M); 
      break; 
     case 'N': 
      doType(VK_SHIFT, VK_N); 
      break; 
     case 'O': 
      doType(VK_SHIFT, VK_O); 
      break; 
     case 'P': 
      doType(VK_SHIFT, VK_P); 
      break; 
     case 'Q': 
      doType(VK_SHIFT, VK_Q); 
      break; 
     case 'R': 
      doType(VK_SHIFT, VK_R); 
      break; 
     case 'S': 
      doType(VK_SHIFT, VK_S); 
      break; 
     case 'T': 
      doType(VK_SHIFT, VK_T); 
      break; 
     case 'U': 
      doType(VK_SHIFT, VK_U); 
      break; 
     case 'V': 
      doType(VK_SHIFT, VK_V); 
      break; 
     case 'W': 
      doType(VK_SHIFT, VK_W); 
      break; 
     case 'X': 
      doType(VK_SHIFT, VK_X); 
      break; 
     case 'Y': 
      doType(VK_SHIFT, VK_Y); 
      break; 
     case 'Z': 
      doType(VK_SHIFT, VK_Z); 
      break; 
     case '`': 
      doType(VK_BACK_QUOTE); 
      break; 
     case '0': 
      doType(VK_0); 
      break; 
     case '1': 
      doType(VK_1); 
      break; 
     case '2': 
      doType(VK_2); 
      break; 
     case '3': 
      doType(VK_3); 
      break; 
     case '4': 
      doType(VK_4); 
      break; 
     case '5': 
      doType(VK_5); 
      break; 
     case '6': 
      doType(VK_6); 
      break; 
     case '7': 
      doType(VK_7); 
      break; 
     case '8': 
      doType(VK_8); 
      break; 
     case '9': 
      doType(VK_9); 
      break; 
     case '-': 
      doType(VK_MINUS); 
      break; 
     case '=': 
      doType(VK_EQUALS); 
      break; 
     case '~': 
      doType(VK_SHIFT, VK_BACK_QUOTE); 
      break; 
     case '!': 
      doType(VK_EXCLAMATION_MARK); 
      break; 
     case '@': 
      doType(VK_AT); 
      break; 
     case '#': 
      doType(VK_NUMBER_SIGN); 
      break; 
     case '$': 
      doType(VK_DOLLAR); 
      break; 
     case '%': 
      doType(VK_SHIFT, VK_5); 
      break; 
     case '^': 
      doType(VK_CIRCUMFLEX); 
      break; 
     case '&': 
      doType(VK_AMPERSAND); 
      break; 
     case '*': 
      doType(VK_ASTERISK); 
      break; 
     case '(': 
      doType(VK_LEFT_PARENTHESIS); 
      break; 
     case ')': 
      doType(VK_RIGHT_PARENTHESIS); 
      break; 
     case '_': 
      doType(VK_UNDERSCORE); 
      break; 
     case '+': 
      doType(VK_PLUS); 
      break; 
     case '\t': 
      doType(VK_TAB); 
      break; 
     case '\n': 
      doType(VK_ENTER); 
      break; 
     case '[': 
      doType(VK_OPEN_BRACKET); 
      break; 
     case ']': 
      doType(VK_CLOSE_BRACKET); 
      break; 
     case '\\': 
      doType(VK_BACK_SLASH); 
      break; 
     case '{': 
      doType(VK_SHIFT, VK_OPEN_BRACKET); 
      break; 
     case '}': 
      doType(VK_SHIFT, VK_CLOSE_BRACKET); 
      break; 
     case '|': 
      doType(VK_SHIFT, VK_BACK_SLASH); 
      break; 
     case ';': 
      doType(VK_SEMICOLON); 
      break; 
     case ':': 
      doType(VK_COLON); 
      break; 
     case '\'': 
      doType(VK_QUOTE); 
      break; 
     case '"': 
      doType(VK_QUOTEDBL); 
      break; 
     case ',': 
      doType(VK_COMMA); 
      break; 
     case '<': 
      doType(VK_LESS); 
      break; 
     case '.': 
      doType(VK_PERIOD); 
      break; 
     case '>': 
      doType(VK_GREATER); 
      break; 
     case '/': 
      doType(VK_SLASH); 
      break; 
     case '?': 
      doType(VK_SHIFT, VK_SLASH); 
      break; 
     case ' ': 
      doType(VK_SPACE); 
      break; 
     default: 
      throw new IllegalArgumentException("Cannot type character " 
        + character); 
     } 
    } 

    private void doType(int... keyCodes) { 
     doType(keyCodes, 0, keyCodes.length); 
    } 

    private void doType(int[] keyCodes, int offset, int length) { 
     if (length == 0) { 
      return; 
     } 

     robot.keyPress(keyCodes[offset]); 
     doType(keyCodes, offset + 1, length - 1); 
     robot.keyRelease(keyCodes[offset]); 
    } 
} 

, но все еще не получило никакого успеха.

Действительно ли можно сделать автоматический вход в любое приложение для настольных компьютеров?

Пожалуйста, дайте мне знать, если есть какие-либо предложения или способы их достижения.

ответ

0

Насколько я знаю, это невозможно в Java. У каждого приложения есть свой собственный механизм входа, а основная цель Robot API - это для автоматическое тестирование реализаций платформы Java.

 Смежные вопросы

  • Нет связанных вопросов^_^