2009-11-13 5 views
0

코드에서 이벤트가 발생하면 프로그램에서 Microsoft PowerPoint를 연 다음 코드에 정의 된 일부 키를 에뮬레이션 할 수 있도록 코드를 작성했습니다. 내 문제는 내가 키 프레스를 에뮬레이트하고 에뮬레이트하기를 원하는 키의 십진수 값을 전달하도록 요청할 때 그것이 잘못되었다는 것이다. 이 코드는 다음과 같다 :Java에서 키 에뮬레이터 사용시 문제

public void test(String key) throws Exception { 

    int value = (int)key.charAt(0); 

    Controller c = new Controller(); 
    Executer e = new Executer(c); 

    e.exec(c,"POWERPNT"); 

    c.delay(5000); 
    c.emulateKeyTyped(97); 
    c.emulateKeyTyped(98); 
} 

코드는 상기 마이크로 소프트 파워 포인트를 열어 키 'A'와 'B'을 (그의 ASCII 값이 '97'과 '98'이다) 모방하는 것을 의미한다, 대신 PowerPoint에서 '1'과 '2'를 인쇄하고 이것이 왜 있는지 모릅니다. 이것은 PowerPoint 2007을 사용하고 있습니다. 이상한 점은 "97"을 "KeyEvent.VK__A"(동일한 정수, 즉 '97', "KeyEvent.VK_A"가 정수를 반환하기 때문에)로 바꾼 경우입니다. PowerPoint에서 'a'문자를 인쇄합니다. 정수를 사용하는 이유는 프로그램의 다른 부분에서 전달되기 때문이며 문자/숫자 등 이외의 키 누름을 에뮬레이션 할 수 있기를 원하기 때문입니다 (화살표 등)

코드에 문제가 있는지, 아니면 PowerPoint 2007과 관련이 있는지는 잘 모르겠지만 어떤 도움을 주시면 감사하겠습니다. 답변에 대한


덕분에 지금까지

이 Z로를 통해 작동하지만 난 여전히 같은 다른 값을 작동시킬 수없는 이유는 무엇입니까? 등

+0

컨트롤러 및 Executer 클래스는 어디에서 찾을 수 있습니까? – jitter

답변

0

the documentation에있어서 VK_Z 통해

VK_A는 (0x41이 - 0x5A) 'A'을 통해 'Z'ASCII와 동일위한 KeyEvent 상수

정수 값 영문자 키는 대문자 글자의 ASCII 값이며 소문자는 아닙니다.

이것은 당신이 VK_A의 값은 ox41 = 65 65, 66하지 97 및 98

+0

그렇다면 화면에 캡틴 'A'를 실제로 보내고 싶거나 예를 들어 다른 문자를 보내고 싶다면 어떻게해야할까요? '?' (ascii 값이 63입니까?) – me123

+0

키보드에서 키 누르기를 에뮬레이트하고 있으므로 대문자 A를 보내려면 Shift와 A를 에뮬레이션합니다 (CapsLock이 꺼져 있다고 가정). 내가 사용하는 컨트롤러 클래스에 익숙하지 않아서 어떻게 할 지 모르겠다. –

0

사용하려는 것을 의미한다. 따라서 다음과 같이 코드를 수정하면

c.emulateKeyTyped(65); 
c.emulateKeyTyped(66); 

이 표시됩니다. 이것은 위에서 작성한 논리적 결론 일 뿐이며, Controller 또는 Executor이 무엇인지에 관해서는 알지 못합니다!

관련 문제