Java class
을 통해 키보드와 같은 컴퓨터로 텍스트를 보내려면 어떻게해야합니까? Robot
클래스를 사용하여 각 키를 눌렀다가 놓을 것을 고려해 왔지만 지루한 일이며 KeyCode
을 char
에서 가져올 방법이 없습니다.Java 키보드 시뮬레이션
답변
아니, 또한 부드러운 방법이 (작동 Windows에서 잘 적어도 ;-)) :
private static void outputString(Robot robot,String str)
{
Toolkit toolkit = Toolkit.getDefaultToolkit();
boolean numlockOn = toolkit.getLockingKeyState(KeyEvent.VK_NUM_LOCK);
int[] keyz=
{
KeyEvent.VK_NUMPAD0,
KeyEvent.VK_NUMPAD1,
KeyEvent.VK_NUMPAD2,
KeyEvent.VK_NUMPAD3,
KeyEvent.VK_NUMPAD4,
KeyEvent.VK_NUMPAD5,
KeyEvent.VK_NUMPAD6,
KeyEvent.VK_NUMPAD7,
KeyEvent.VK_NUMPAD8,
KeyEvent.VK_NUMPAD9
};
if(!numlockOn)
{
robot.keyPress(KeyEvent.VK_NUM_LOCK);
}
for(int i=0;i<str.length();i++)
{
int ch=(int)str.charAt(i);
String chStr=""+ch;
if(ch <= 999)
{
chStr="0"+chStr;
}
robot.keyPress(KeyEvent.VK_ALT);
for(int c=0;c<chStr.length();c++)
{
int iKey=(int)(chStr.charAt(c)-'0');
robot.keyPress(keyz[iKey]);
robot.keyRelease(keyz[iKey]);
}
robot.keyRelease(KeyEvent.VK_ALT);
}
if(!numlockOn)
{
robot.keyPress(KeyEvent.VK_NUM_LOCK);
}
}
에 한번 사용이 : (당신이 테스트를 위해 사용하지 않는 경우에도)
은 GUI 테스트 프레임 워크를 사용합니다. 나는 FEST을 추천한다. FEST에서는 GUI 요소를 검색하고 텍스트 입력을 포함한 모든 종류의 사용자 상호 작용을 자동화 할 수 있습니다.
당신이 (당신이 구성 요소를 제어 할 수 있습니다 래퍼에 대한 FEST 기간) 텍스트 필드의 비품을 일단 예를 들어, 당신은 ... - 1337 JavaCoder 정확 하 @
JTextComponentFixture fixture = ...;
fixture.enterText("Some text");
을 할 수
일부 (특수 문자)를 처리하려면 일부 switch-case
(하드 방법?)이 필요하지만 대부분의 문자는 상당히 쉽게 처리 할 수 있습니다. 당신이 필요로 얼마나 많은
은 의 타겟 고객에 따라 다르지만 어떤 경우에, 당신은의 조합을 통해 처리 할 수 있습니다
AWTKeyStroke.getAWTKeyStroke(char yourChar).getKeyCode();
- 가장 기본적인 것들을 처리;a-zA-Z
은 기본으로(a-z)
keyEvents로 번역되며 다른 소수 문자도 마찬가지로(base key only, no modifiers thus no casing is applied)
으로 처리됩니다.
이 방법은 영어 처리를 단순화하는 데 특히 효과적입니다.이 방법은 다른 언어에 비해 악센트 부호가있는 문자를 거의 사용하지 않기 때문에 특히 효과적입니다.
Normalizer.normalize(String textToNormalize, Form.NFD);
- they'r 기본 요소로, 대부분의 구성 (악센트) 문자,áàãâä,éèêë,íìîï,etc
처럼, 그리고 they'r 대문자 등가물을 분해한다. 예 :á (224)
은a (97)
이고 다음에´ [769]
이됩니다.
당신의 send(String text)
방법 (예에서이 VK_DEAD_ACUTE
을의) 악센트의 간단한 swap
, 악센트를 보낼 수 있으며, 그들이 적절한 전송 순서를 얻을 수 있도록 그것은, 편지, 그리고 당신이 원하는 á
출력을 얻을 경우 . 따라서 á
필터가 필요 없습니다.
첫 번째 단순화와 결합하면이 예에서는 3/3 [a,á,´]
대신 switch-case
대신 1/3 [´]
이 필요합니다.
이들은 많은 동료 프로그래머가 (비 현명하게) 제안한 두려운 긴 switch-case
방법을 단축하기 위해 수행 할 수있는 많은 단순화 중 일부에 지나지 않습니다.
예를 들어, 쉽게 문자가 전송 될 경우 검출함으로써 케이싱을 처리 할 수 대문자이고, 필요한 경우, 현재 CAPSLOCK 상태를 검출하는 단계, 상기 케이싱 동작을 반전 :
boolean useShift = Character.isUpperCase(c);
useShift = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK) ? !useShift : useShift;
if (useShift) {
keyPress(KeyEvent.VK_SHIFT);
sendChar(aChar);
keyRelease(KeyEvent.VK_SHIFT);
} else {
sendChar(aChar);
}
다른 옵션 (내가 사용하는 것)은 심지어 더 간단합니다.이 매크로는 도구/언어로 코드를 작성하는 것입니다. (나는 이것을 사용하고 추천합니다 : AutoHotKey) 단순히 실행이라고 부릅니다. Java로부터 :
Runtime rt = Runtime.getRuntime();
//"Hello World!" is a command-line param, forwarded to the ahk script as it's text-to-send.
rt.exec(".../MyJavaBot/sendString.ahk \"Hello World!\"");
,
- 1. 키보드 탭 시뮬레이션
- 2. Symbian 시뮬레이션 키보드 입력
- 3. TestComplete의 숫자 키보드 시뮬레이션
- 4. 키보드 이벤트 시뮬레이션
- 5. WPF에서 마우스/키보드 입력 시뮬레이션
- 6. 쉘 스크립트 + 시뮬레이션 키보드 키
- 7. WPF에서 키보드 이벤트 시뮬레이션 Textbox
- 8. 무선 키보드/마우스 응용 프로그램 : 키보드 입력 시뮬레이션
- 9. WM의 Java Thread.sleep() 시뮬레이션
- 10. 시뮬레이션 어닐링 템플릿 java
- 11. 마우스/키보드 이벤트 시뮬레이션 (gtk + HOOPS 3D)
- 12. C# 스레드 시뮬레이션 키보드 클릭 및 대기
- 13. 처리 할 textbox_keydown 이벤트에서 키보드 단축키 시뮬레이션?
- 14. 시뮬레이션 작업 체크 포인트 Java
- 15. webDriver 용 Java 시뮬레이션 클릭
- 16. Java 키보드 후크
- 17. Java 애플릿의 키보드 입력
- 18. Java 키보드 가져 오기 이동
- 19. Java 키보드 이벤트의 이상한 동작
- 20. Java 키보드/마우스 사용 안함
- 21. RFID, 키보드 쐐기 및 Java
- 22. 마우스 이벤트 및 키보드 이벤트 시뮬레이션 C++ linux
- 23. JavaScript를 사용하여 링크를 클릭하여 키보드 단축키를 시뮬레이션 할 수 있습니까?
- 24. D 1.0 (탱고) 마우스 이동; 키보드 프레스 시뮬레이션 등
- 25. NodeJS에서 키보드/마우스 이벤트를 시뮬레이션 할 수 있습니까?
- 26. 몬테카를로 시뮬레이션 결과 시뮬레이션
- 27. 인공 지능 디자인을위한 Java/C 시뮬레이션
- 28. C++에서 Java 가져 오기 시뮬레이션
- 29. Java EE 기반 웹 사이트 시뮬레이션
- 30. Java에서 누른 키 시뮬레이션
다른 프로그램 또는 자신의 프로그램에 텍스트를 보내시겠습니까? – Pace
내 목표는 단어 문서, 구글 검색 등등에 텍스트를 보내는 것입니다. – Confiqure