Gooday Note Scrap Source Android login
 
작성일 : 12-06-20 13:08
[Java] 로봇클래스 - 마우스제어,키보드제어,화면캡쳐
 글쓴이 : 기리 (123.♡.195.24)
조회 : 22,583  
   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
번호 제   목 글쓴이 날짜 조회
91 [PHP] PHP 웹메일 기리 02-06 5048
90 [Linux] APM 설치 기리 08-30 4602
89 [Linux] yum 기리 08-30 3136
88 [Linux] APM yum으로 설치하기 기리 08-22 8869
87 [MySql] Export to CSV (1) 기리 06-26 3575
86 [Java] 소켓통신 (1) 기리 06-20 5979
85 [Java] 로봇클래스 - 마우스제어,키보드제어,화면캡… (1) 기리 06-20 22584
84 [Java] Java Web Start 자동 설치 - 14.9.3 방법 2 : 자동 다… 기리 06-18 4916
83 [Extjs] TabPanel에 IframePanel 넣기 기리 06-13 4049
82 [Linux] CentOS Network 설정 (2) 기리 05-18 8825
81 [Linux] Mount : /etc/fstab 기리 05-16 3022
80 [MySql] Mysql 상태 확인 기리 05-15 5165
79 [MySql] 연도별 가입자 통계 기리 05-15 5141
78 [PHP] PHP 5.3 버전 DEPRECATED 기리 05-14 8012
77 [Linux] NFS 설정 (1) 기리 05-14 5959
 1  2  3  4  5  6  7  8  9