JDK1.3 부터 추가된 클래스 입니다. java.awt.Robot에 위치하며, 자바로 작성된 애플리케이션 프로그램을 테스트 할수 있도록 마우스와 키보드의 입력을 프로그램 상의로 제어 할수 있는 클래스 입니다. 사용방법은 간단합니다. 우선 마우스를 스크린 화면상 좌표(200,200)으로 이동시키려고 한다면 다음과 코드를 사용하면 됩니다.
//마우스를 화면절대좌표(200,200)으로 이동시키는 코드
import java.awt.*;
public class RobotTest
{
public RobotTest()
{
try
{
Robot robot = new Robot();
robot.mouseMove(200, 200);
}
catch (AWTException ae)
{
ae.printStackTrace();
}
}
public static void main(String[] args)
{
new RobotTest();
System.exit(0);
}
}
이외에도 다음과 같은 키보드와 마우스를 제어할 수 있는 메소드들이 존재합니다.
public void mousePress(int buttons)
마우스버튼이 눌려져 있는 상태로 만듭니다.
파라미터:InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK,InputEvent.BUTTON3_MASK 가 사용되며,하나 또는 하나이상의 플래그(파라미터)를 결합해서 사용할수 있습니다.
public void mouseRelease(int buttons)
마우스 버튼이 눌려져 있지 않은 상태로 만듭니다.
mousePress와 파라미터는 동일합니다.
public void keyPress(int keycode)
해당 키(keycode)가 눌려져 있는 상태로 만듭니다.
파라미터: VK_.. 가상키코드가 해당됩니다.
public void keyPress(int keycode)
해당키(keycode)가 눌려져 있지 않은 상태로 만듭니다.
파라미터는 keyPress와 동일합니다.
// 메모장을 띄운후, Hello 글자를 입력한후, 모든 글자를 선택하고 오른쪽 마우스를
// 클릭해서, 서브메뉴 호출하는 Robot클래스를 이용한 예제
import java.awt.*;
import java.awt.event.*;
public class RobotTestII
{
public RobotTestII()
{
int keyInput[] =
{
KeyEvent.VK_H,
KeyEvent.VK_E,
KeyEvent.VK_L,
KeyEvent.VK_L,
KeyEvent.VK_O
};
try
{
// notepad 프로그램 활성화
Runtime.getRuntime().exec("notepad");
Robot robot = new Robot();
// Hello글자 입력
for(int i=0; i<keyInput.length; i++)
{
robot.keyPress(keyInput[i]);
robot.keyRelease(keyInput[i]);
//현재 해당 쓰레드를 200ms 동안 sleep시킨다.
robot.delay(200);
}
// 메모장에 입력한 글자를 모두 선택한다.
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_A);
//현재 해당 쓰레드를 500ms 동안 sleep시킨다.
robot.delay(500);
// 마우스 오른쪽 버튼 클릭
robot.mousePress(InputEvent.BUTTON3_MASK);
robot.mouseRelease(InputEvent.BUTTON3_MASK);
}
catch (AWTException ae)
{
ae.printStackTrace();
}
catch (java.io.IOException ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
new RobotTestII();
System.exit(0);
}
}
/* 캡쳐 영역 */
int x = 0, y = 0, width = 100, height = 100;
java.awt.Robot robot = new java.awt.Robot();
java.awt.image.BufferedImage image = robot.createScreenCapture(new Rectangle(x, y, weight, height));
이것을 통해 화면 캡쳐도 되고 화면의 색도 읽어 오고..
마우스로 막 움직이는 것도 하고..
나름 알아 두면 편한 클래스 같다. ㅋㅋ
하지만.. 언제 쓰는 일이 올지...