2013-10-11 2 views
0

저는 인간과 비슷한 방법으로 Java에서 키 누르기를 시뮬레이트하는 프로그램을 개발 중입니다. 목적은 x 초마다 임의의 키 누름을 보내는 것입니다 (x는 두 정수 사이의 임의의 숫자 임). 다음 코드는 내가 지금까지 가지고 있습니다 : 내가 달성하고자하는 것은Java에서 무작위 키 이벤트 시뮬레이션

public class AutoKeyboard { 

    public static int randInt(int min, int max) { // Method to generate random int 
     int randomNum = rand.nextInt((max - min) + 1) + min; 
     return randomNum; 
    } 

    public static void main(String[] args) throws InterruptedException { 

     int running = 1; 

     while (running == 1) { 
      try { 

       int delay = randInt(336415,783410); // Generates random int between two integers 
       Robot robot = new Robot(); 

       Thread.sleep(delay); // Thread sleeps for x (random int) milliseconds 
       robot.keyPress(KeyEvent.VK_SPACE); // Simulating press of space bar 

      } catch (AWTException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

Keyevent.VK_SPACE 무작위로, 그래서 대신 스페이스 바의이 목록에서 어떤 열쇠가 될 수있다 (예를 들면에게 그것은을 누를 것 AD에서 무작위 키). 이 일을 어떻게 하죠? 나는 이미 가지고있는 프로그래밍 지식을 가진 논리적 인 해결책을 생각할 수 없다. (슬프게도 최소한이다.)

답장을 보내 주셔서 감사합니다.

답변

0

나는 단지126 사이의 임의의 숫자를 생성 할 것입니다. 그런 다음 char의 모든 부부는 임의로 32를 더합니다. 32는 공백입니다. 65 - 90은 대문자이고 97-122는 소문자입니다.

좋은 자원 :

Random randomGenerator = new Random(); 
int ran = randomGenerator.nextInt(126 - 33); 
ran += 33; 

이 그런 다음 임의의 문자가 될 것입니다 실행 : http://www.asciitable.com/

가 나는 것 난수를 생성합니다. 당신은 루프를 가지고 몇 번 할 수 있습니다.

KeyEvent.VK_SPACE를 사용할 필요조차 없습니다. 사용하는 경우 :

System.out.println(KeyEvent.VK_SPACE); 

반환 값은 "32"입니다. 그것은 ASCII 차트에 해당합니다. 그냥 사용하십시오.

+0

아스키 코드가 잘못되었다고 생각합니다. 그러나 이것을 통해 알아낼 수 있었고 효과가있었습니다! 이제 임의의 문자를 보냅니다. 모두에게 감사드립니다. –

1

누를 수있는 모든 가능한 키가 들어있는 배열 (또는 원하는 경우 목록)을 정의 할 수 있습니다 (final static). 이 다소 장황하지만, 당신이 원하는 키 사용할 수있는 유연성을 제공 할 수 :

int possibleKeys = new int[]{ 
    ' ', 
    '0', 
    'A', // careful not to use 'a' though! 
    KeyEvent.VK_UP 
}; 
:

int possibleKeys = new int[]{ 
    KeyEvent.VK_SPACE, 
    KeyEvent.VK_0, 
    KeyEvent.VK_A, 
    KeyEvent.VK_UP 
}; 

당신은 심지어 같은 ASCII 값을 공유하는 상수, 해당 문자를 사용할 수 있습니다

그럼 그냥 그 배열에서 하나의 임의의 키 코드를 선택 : 또한

Random rand = new Random(); 
int i = rand.nextInt(possibleKeys.length); 
int keyCode = possibleKeys[i]; 

, 난 당신이 0,123 후에 수행되어야 robot.keyRelease 누락 참조:

robot.keyPress(keyCode); // Simulating press of a key 
robot.keyRelease(keyCode); // Simulating release of a key