여러 번 자동 테스트, 자동 데모 기능 또는 기타 마우스 및 키보드 제어 응용 프로그램 (예 : 사람들이 광고를 클릭하여 수익을 창출하는 등)을 구현하기를 희망합니다. 이를 위해 JDK1.3 이후, 이는 기본 입력 이벤트 인 java.awt.robot을 생성하는 로봇을 제공했습니다.
아래는 로봇의 기능 및 응용 프로그램 예제를 자세히 소개합니다.
1. 로봇의 주요 기능
1. BufferedImage CreateScreencapture (사각형 ScreenRect)
참고 :이 메소드는 키보드의 인쇄 스크린 키와 유사한 기능을 제공하여 지정된 직사각형 영역의 화면 픽셀을 복사하여 완충 지미를 생성합니다.
응용 프로그램 : 그래픽 프로그램 에서이 방법을 사용하거나 원격 컴퓨터 모니터링 프로그램 등으로 만들 수있는 원격 화면 전송을 실현하는 데 사용할 수 있습니다.
2. 공극 지연 (int ms)
설명 : 몇 밀리 초 (MS)의 현재 프로그램 (스레드)을 잠들었습니다.
응용 프로그램 : 프로그램 지연을 제어하는 데 사용할 수 있습니다. 이것은 두 개의 간격 작업이 지연되기 때문에 일반적으로 필요합니다.
3. 색상 getPixelColor (int x, int y)
설명 : 주어진 화면 좌표의 픽셀 위치의 색상 값을 얻습니다.
응용 프로그램 : 색상 RGB 값 만 가져 가면 많이 말하지 않을 것입니다.
4. void keypress (int KeyCode)
void kyrelease (int KeyCode)
참고 :이 두 가지 방법의 기능을 한눈에 볼 수 있습니다. 지정된 키를 생성하는 데 사용되는 키 프레스 및 리프팅 조치는 Keyboard 작업을 시뮬레이션하기 위해 Win32 API의 keyb_event 함수와 동일합니다. 특정 키 코드 값은 keyevent.vk_c, keyevent.vk_d, keyevent.vk_control 등입니다. 특정 응용 프로그램을 적용 할 때 Eclipse 프롬프트를 살펴보면 알 수 있습니다.
응용 프로그램 : 프로그램의 자동 데모, 테스트 등에 사용될 수 있으며 매우 유용합니다.
5. void mousemove (int x, int y)
설명 : 마우스 커서를 지정된 화면 좌표로 이동하십시오.
응용 프로그램 : 프로그램의 자동 데모, 테스트 등에 사용할 수 있으며 다른 방법과 함께 사용하기 위해 필수 불가결합니다.
6. void mousepress (int buttons)
void mousereLease (int buttons)
void mousewheel (int wheelamt)
참고 : 위의 세 가지 방법은 지정된 마우스 버튼의 프레스, 리프트 및 스크롤 휠 이동을 생성하여 마우스 작동을 시뮬레이션합니다. 특정 버튼 값에는 inputevent.button1_mask (왼쪽 마우스 버튼), inputevent.button3_mask (오른쪽 마우스 버튼, 더블 키 마우스 인 경우 inputevent.button2_mask를 대신 사용하십시오)가 포함됩니다.
응용 프로그램 : 프로그램의 자동 데모, 테스트 등에도 사용할 수 있습니다. 다른 방법과 함께 사용하는 것이 매우 중요합니다.
2. 응용 프로그램 예제
비교적 작은 두 가지 응용 프로그램 예제를 작성했습니다. 하나는 간단한 시뮬레이션 테스트이며, 다른 하나는 자동으로 광고를 클릭하여 이익을 얻는 것입니다. 다음은 데모입니다.
먼저 몇 가지 일반적인 방법을 Common.java
패키지 com.alexa; import java.awt.rectangle; java.awt.robot import; java.awt.toolkit import; java.awt.event.inputevent import; java.awt.event.keyevent를 가져 오기; java.awt.image.bufferedimage import; import javax.swing.icon; import javax.swing.imageicon; /** * @Description Robot 도움말 클래스 기본 기능을 구현하는 클래스 * @Author Alexia * @Date 2013/5/18 */public class common {/** * 마우스 클릭 (왼쪽 클릭), 그리고 두 번 클릭하려면 계속 호출하면 * * @param r * @param x * x coordinate 위치 */public y */public y coordinate * @param 지연 * @param 지연 * @param 지연 * @param 지연 * @ clicklmouse (로봇 r, int x, int y, int delay) {r.MousEmove (x, y); R.MousePress (Inputevent.button1_mask); R.Delay (10); R.MousERELEASE (inputevent.button1_mask); R.Delay (지연); } / ** * 마우스를 마우스 오른쪽 버튼으로 클릭하고 두 번 클릭하려면 연속적으로 전화하십시오 * * @param r * @param x * x 좌표 위치 * @param y * y coderinate 위치 * @param 지연 *이 작업 후 지연 시간 * / public static void clickrmouse (robot r, int x, int y, int delay) {r.mousemove (x, y); R.MousePress (Inputevent.button3_mask); R.Delay (10); r.MousEerElease (inputevent.button3_mask); R.Delay (지연); } / ** * 키보드 입력 (한 번에 하나의 문자 만 입력 할 수 있습니다) * * @param r * @param ks * 키보드로 입력 한 문자 배열 * @param 지연 * 키 * / public static void elfkeys (robot r, int [] ks, int delay) {(int i = 0; ks.length; i); R.Delay (10); r.keylerease (ks [i]); R.Delay (지연); }} / ** * copy * * @param r * @Throws InterruptedException * / void docopy (로봇 r) 던지기 InterruptedException {thread.sleep (3000); R.SetAutodelay (200); r.keypress (keyevent.vk_control); r.keypress (keyevent.vk_c); r.keyeRelease (keyevent.vk_control); R.KeyErelease (keyevent.vk_c); } / ** * paste * * @param r * @throws InterruptedException * / void doparse (로봇 r) 던지기 인터럽트 exception {R.SetAutoDelay (500); Thread.sleep (2000); R.MouseMove (300, 300); R.MousePress (Inputevent.button1_mask); R.MousERELEASE (inputevent.button1_mask); r.keypress (keyevent.vk_control); r.keypress (keyevent.vk_v); r.keyeRelease (keyevent.vk_control); R.KeyErelease (keyevent.vk_v); } / ** * 전체 화면 캡처 moo * * @param r * @return * / public Icon CapturefullScreen (Robot r) {bufferedImage fullScreenImage = r.createsCreencapture (new Rectangle (Toolkit.getDefaultToolKit (). getScreensize ())); ImageIcon icon = new ImageIcon (fullScreenImage); 리턴 아이콘; } / ** * 화면의 정형 외과 영역을 캡처 * * @param r * @param x * x 좌표 위치 * @param y * y 조정 위치 * @param width * @param 높이 * 사각형 높이 * / public icon capturepartscreen (로봇 r, int x, int y, int width, int 높이) {r.mousemove (x); BufferedImage FullScreenImage = R.CreatesCreencapture (새로운 사각형 (너비, 높이)); ImageIcon icon = new ImageIcon (fullScreenImage); 리턴 아이콘; }}예제 전에 화면의 좌표 위치를 결정하는 방법에주의를 기울이십시오. 가제트를 다운로드하여 사용하기에 매우 편리합니다. 사용하는 것이 좋습니다.
1. 간단한 모의 테스트
패키지 com.alexia; java.awt.*; import java.awt.event.*; import javax.swing.joptionpane; public class simpletest {public static void main (String [] args)은 예외 {Final Robot rb = new Robot (); 새 스레드 () {public void run () {rb.delay (2000); // 캐리지를 시뮬레이션하면 rb.keypress (keyevent.vk_enter); rb.keyRelease (keyevent.vk_enter); } }.시작(); RB.Delay (3000); // 시작 메뉴의 대략적인 위치를 설정 int x = 40; int y = Toolkit.getDefaultToolKit (). getScreensize (). 높이 -10; // 마우스를 시작 메뉴로 이동합니다. RB.Delay (500); // 시작 메뉴를 클릭하십시오. common.clicklmouse (rb, x, y, 500); RB.Delay (1000); // cmd 명령 cmd를 실행합니다 int [] ks = {keyevent.vk_c, keyevent.vk_m, keyevent.vk_d, keyevent.vk_enter,}; Common.presskeys (RB, KS, 500); RB.MouseMove (400, 400); RB.Delay (500); // dir 명령을 실행하여 ks = new int [] {keyevent.vk_d, keyevent.vk_i, keyevent.vk_r, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // cls 명령을 실행하여 ks = new int [] {keyevent.vk_c, keyevent.vk_l, keyevent.vk_s, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // 종료 명령 종료 실행 ks = new int [] {keyevent.vk_e, keyevent.vk_x, keyevent.vk_i, keyevent.vk_t, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // 테스트를 마우스 오른쪽 버튼으로 클릭하십시오. common.clickrmouse (rb, x, y, 500); 새 스레드 () {public void run () {rb.delay (1000); // rb.keypress를 입력합니다 (keyEvent.vk_enter); rb.keyRelease (keyevent.vk_enter); } }.시작(); joptionpane.showmessagedialog (null, "Demo is Over!"); }} 2. Netease 광고를 클릭하여 빈약 한 이익을 얻으십시오.
패키지 com.alexia; java.awt.awxception import; java.awt.desktop import; java.awt.robot import; java.awt.event.keyevent를 가져 오기; import java.io.ioexception; import java.net.uri; java.util.random import; 공개 클래스 autoclickads {개인 로봇 로봇; 개인 휘발성 부울 정지 = 거짓; / ** 메인*/ public autoclickads () {try {robot = new robot (); } catch (awtexception ex) {ex.printstacktrace (); }} public void init () {robot.delay (3000); System.out.println ( "광고 시작 클릭 시작"); // 새 브라우저 창 또는 기존 브라우저 창 (JDK 1.6 이상)에서 지정된 URL을 열면 Desktop Desktop = Desktop.getDesktop (); if (goodtop.isdesktopsupported () && goodtop.issupported (goodtop.action.browse)) {uri uri = uri = uri.create ( "http://lanxuezaipiao.blog.163.com/"); try {goodtop.browse (uri); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} try {run (); } catch (InterruptedException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 멈추다(); System.out.println ( "클릭 광고 중지"); } public void run () 던지기 중국적 exception {int count = 1; while (! stop) {robot.delay (8000); int x = 576; int y = 567; 랜덤 r = 새로운 랜덤 (); common.clicklmouse (로봇, x, y, 3000); // 아래쪽 화살표를 입력하여 페이지를 실현하여 int [] ks = {keyevent.vk_down}; for (int i = 0; i <10; i ++) common.presskeys (로봇, ks, 0); int [] [] a = {{{500, 103}, {500, 163}, {500, 223}, {500, 283}, {500, 343}, {500, 403}, {500, 463}, {500, 523}, {583}, {500, 643}; int b = r.nextint (5); x = a [b] [0]; y = a [b] [1]; common.clicklmouse (로봇, x, y, 1000); // 아래쪽 화살표를 입력하여 페이지 회전을 달성합니다 (int i = 0; i <500; i ++) common.presskeys (로봇, KS, 0); // 페이지를 달성하기 위해 아래쪽 화살표를 입력합니다 int [] kups = {keyevent.vk_up}; for (int i = 0; i <3; i ++) common.presskeys (로봇, Kups, 0); x = 900; y = 210; common.clicklmouse (로봇, x, y, 3000); x = 1090; y = 15; common.clicklmouse (로봇, x, y, 3000); x = 900; y = 135; common.clicklmouse (로봇, x, y, 3000); System.out.println ( "성공적으로" + count + "광고!"); }} public synchronized void stop () {stop = true; } / ** * * @param args 명령 줄 인수 * * @throws InterruptedException * / public static void main (String [] args)은 InterruptedException {AutoClickads mc = new AutoClickads (); mc.init (); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.