2017-03-13 6 views
0

그래서 나는 다음과 같은 코드가 있습니다자바 로봇 - 이슈 입력 'A'맥

public static void main(String[] args) throws AWTException, InterruptedException { 
    Robot robot = new Robot(); 

    robot.setAutoWaitForIdle(true); 
    robot.setAutoDelay(40); 

    // This works fine 
    robot.mouseMove(40, 130); 
    robot.mousePress(InputEvent.BUTTON1_MASK); 
    robot.delay(200); 
    robot.mouseRelease(InputEvent.BUTTON1_MASK); 
    robot.delay(200); 

    // The 'a' is never inputted 
    robot.keyPress(KeyEvent.VK_A); 
    robot.delay(200); 
    robot.keyRelease(KeyEvent.VK_A); 
} 

이 코드는 성공적으로 위치 (40), (130) 및 클릭에 마우스를 이동합니다. 필자는 텍스트 편집기를이 위치에서 열어 초점을 맞 춥니 다.

다음 코드 비트가 문제입니다. keyPress/Release 스 니펫은 다른 코드에서 완벽하게 작동합니다. (100과 마찬가지로 숫자 4에 해당합니다.)하지만 어떤 이유로 문자 'a'는 텍스트 편집기에 인쇄되지 않습니다.

나는 프로그램을 계속 반복하고 ~ 5 초 동안 인쇄 해 보았습니다. 프로그래밍 방식 클릭 후 텍스트 편집기에서 'a'가 인쇄되지 않습니다. 이 시간 동안 직접 편집 프로그램을 클릭하면 'a'의 문자열이 나타납니다.

이 문제의 원인은 무엇이며 어떻게 해결할 수 있습니까?

+0

다른 'VK_?'키 이벤트 (예 :'VK_B')로 정확히 동일한 코드를 실행하면 작동합니까? 또한 ASCII 코드 '100'은 숫자 '4'가 아닌 소문자 'd'이므로 혼란이있는 것으로 보입니다. –

+0

예, VK_4와 정확히 동일한 코드가 올바르게 작동합니다. VK_B가 작동하지 않는 것처럼 보입니다. – dszopa

+0

'VK_4'로 시작하는'VK_A'로'VK_4'를 번갈아 보내면 어떨까요? 'A'가 없으면'4'가 나옵니까? 'VK_A'로 시작한다면 어떨까요? 이것을 실험 해보기 위해 약간의 노력을 기울이십시오. –

답변

1

필자는 제 의견에 편집자에게 정확하게 초점을 맞추는 데 문제가 있다고 생각합니다. ALT + TAB을 수행하여 Windows 솔루션을 사용해 볼 수 있습니다. 그런 다음이 프로그램을 릴리스하여 편집기를 선택하십시오.

Robot robot = new Robot(); 

robot.setAutoWaitForIdle(true); 
robot.setAutoDelay(40); 

robot.keyPress(KeyEvent.VK_ALT);//on mac use VK_META 
robot.keyPress(KeyEvent.VK_TAB); 
robot.keyRelease(KeyEvent.VK_ALT);//on mac use VK_META 
robot.keyRelease(KeyEvent.VK_TAB); 

robot.keyPress(KeyEvent.VK_A); 
robot.delay(200); 
robot.keyRelease(KeyEvent.VK_A); 
+0

이것이 문제인 것처럼 보입니다. Mac alt + tab에서'VK_ALT'을'VK_META'로 변경해야했습니다. 왜'BUTTON1_MASK' 또는'BUTTON1_DOWN_MASK'가 창을 부적절하게 선택하는지 잘 모르겠습니다. 이 문제는 intellij _run_ 영역에서 실행된다는 사실과 관련 있다고 생각합니다. 확실하지. – dszopa