Gooday Note Scrap Source Android login
 
작성일 : 12-06-20 13:08
[Java] 로봇클래스 - 마우스제어,키보드제어,화면캡쳐
 글쓴이 : 기리 (123.♡.195.24)
조회 : 22,582  
   http://blog.naver.com/PostView.nhn?blogId=runmin&logNo=70097395150 [944]
   http://suein1209.tistory.com/462 [1427]

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));


 

이것을 통해 화면 캡쳐도 되고 화면의 색도 읽어 오고..

마우스로 막 움직이는 것도 하고..

나름 알아 두면 편한 클래스 같다. ㅋㅋ

하지만.. 언제 쓰는 일이 올지...


 [출처] [본문스크랩] Robot클래스로 Application 테스트프로그램 만들기|작성자 gckcs2


기리 12-06-20 13:08
 123.♡.195.24  
 
 

Total 121
번호 제   목 글쓴이 날짜 조회
121 [Java] 실행 오류 : 기본 클래스 []을 찾거나 로드할 … 기리 12-19 22828
120 [Java] 로봇클래스 - 마우스제어,키보드제어,화면캡… (1) 기리 06-20 22583
119 [Html] <br>태그 html에서 줄간격 사이즈 줄이기 … (1) 기리 11-01 18776
118 [Linux] 리눅스 마운트(mount) 명령어 기리 05-12 16777
117 [JavaScript] JavaScript (6) 기리 07-12 13490
116 [PHP] PHP 세션에서 시작, 변수등록, 변수삭제, 부수… 기리 04-22 11072
115 [Linux] 리눅스 - 복사 강제 덮어쓰기 (3) 관리자 02-23 9529
114 [JavaScript] 원하는 부분만 인쇄하기 (1) 기리 11-28 9443
113 [Linux] APM yum으로 설치하기 기리 08-22 8869
112 [Linux] CentOS Network 설정 (2) 기리 05-18 8825
111 svn 변경된 파일만 export 하기 (1) 관리자 02-28 8631
110 [MySql] 여러 테이블의 최근 게시물 추출 기리 07-11 8159
109 [PHP] PHP 5.3 버전 DEPRECATED 기리 05-14 8012
108 [Linux] 현재 접속자수 보기 netstat (1) 기리 10-12 7539
107 [MySql] 소켓에러 (3) 기리 04-25 7473
 1  2  3  4  5  6  7  8  9