您的位置:首页 > 编程语言 > Java开发

通过Java.awt.Robot来控制鼠标键盘自动化

2017-07-01 20:43 459 查看
查阅API可以知道Robot类对于鼠标键盘操作的方法:

--1--首先是初始化

Robot r=new Robot();
Robot r=new Robot(GraphicsDevice device);//这个指的是以某个特定区域作为坐标系来执行相关操作
r.setAutoDelay(20);//这是设置每一步操作间的间隔,ms为单位

--2--键盘相关操作

r.keyPress(KeyEvent.VK_A);//按下按键
r.KeyRelease(KeyEvent.VK_A);//抬起按键
--3--鼠标相关操作

r.mouseMove(100,100);//移动鼠标到特定坐标
r.mousePress(KeyEvent.BUTTON1_MASK);//点击鼠标左键
r.mouseRelease(KeyEvent.BUTTON1_MASK);//放开鼠标左键
[code]r.mouseWheel(5);//滚轮滚动

[/code]--4--设置延时,相当于睡眠

r.delay(100);//以ms为单位


--5--图像相关

//--1,获取屏幕区域像素并输入到文件,相当于截图
[code]Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screenRectangle = new Rectangle(screenSize);
BufferedImage image = r.createScreenCapture(screenRectangle);
ImageIO.write(image, "png", new File(fileName));
//--2,获取某个坐标处的像素RGB值
Color color=r.getPixelColor(100, 100);
RGB rgb=new RGB(color.getRed(),color.getGreen(),color.getBlue());


整合代码:

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JOptionPane;

import org.eclipse.swt.graphics.RGB;

public class MKControl {
    
    private static Robot r;
    
    MKControl(int delay){
        try {
            r=new Robot();
            r.setAutoDelay(delay);
        } catch (AWTException e) {
            // TODO 自动生成的 catch 块
            //e.printStackTrace();
            JOptionPane.showMessageDialog(null, "初始化失败", "提示", JOptionPane.WARNING_MESSAGE);
        }
    }
    //获取对应键值
    public int getKey(String key){
        switch(key){
        /*
         * 鼠标
         */
        case "Left":
            return KeyEvent.BUTTON1_MASK;
        case "Middle":
            return KeyEvent.BUTTON2_MASK;
        case "Right":
            return KeyEvent.BUTTON3_MASK;
        
        
        
        /*
         * 键盘
         */
        //数字0-9
        case "0":
            return KeyEvent.VK_0;
        case "1":
            return KeyEvent.VK_1;
        case "2":
            return KeyEvent.VK_2;
        case "3":
            return KeyEvent.VK_3;
        case "4":
            return KeyEvent.VK_4;
        case "5":
            return KeyEvent.VK_5;
        case "6":
            return KeyEvent.VK_6;
        case "7":
            return KeyEvent.VK_7;
        case "8":
            return KeyEvent.VK_8;
        case "9":
            return KeyEvent.VK_9;    
        //字母A-Z
        case "A":
            return KeyEvent.VK_A;
        case "B":
            return KeyEvent.VK_B;
        case "C":
            return KeyEvent.VK_C;
        case "D":
            return KeyEvent.VK_D;
        case "E":
            return KeyEvent.VK_E;
        case "F":
            return KeyEvent.VK_F;
        case "G":
            return KeyEvent.VK_G;
        case "H":
            return KeyEvent.VK_H;
        case "I":
            return KeyEvent.VK_I;
        case "J":
            return KeyEvent.VK_J;
        case "K":
            return KeyEvent.VK_K;
        case "L":
            return KeyEvent.VK_L;
        case "M":
            return KeyEvent.VK_M;
        case "N":
            return KeyEvent.VK_N;
        case "O":
            return KeyEvent.VK_O;
        case "P":
            return KeyEvent.VK_P;
        case "Q":
            return KeyEvent.VK_Q;
        case "R":
            return KeyEvent.VK_R;
        case "S":
            return KeyEvent.VK_S;
        case "T":
            return KeyEvent.VK_T;
        case "U":
            return KeyEvent.VK_U;
        case "V":
            return KeyEvent.VK_V;
        case "W":
            return KeyEvent.VK_W;
        case "X":
            return KeyEvent.VK_X;
        case "Y":
            return KeyEvent.VK_Y;
        case "Z":
            return KeyEvent.VK_Z;
        //F1-F24
        case "F1":
            return KeyEvent.VK_F1;
        case "F2":
            return KeyEvent.VK_F2;
        case "F3":
            return KeyEvent.VK_F3;
        case "F4":
            return KeyEvent.VK_F4;
        case "F5":
            return KeyEvent.VK_F5;
        case "F6":
            return KeyEvent.VK_F6;
        case "F7":
            return KeyEvent.VK_F7;
        case "F8":
            return KeyEvent.VK_F8;
        case "F9":
            return KeyEvent.VK_F9;
        case "F10":
            return KeyEvent.VK_F10;
        case "F11":
            return KeyEvent.VK_F11;
        case "F12":
            return KeyEvent.VK_F12;
        case "F13":
            return KeyEvent.VK_F13;
        case "F14":
            return KeyEvent.VK_F14;
        case "F15":
            return KeyEvent.VK_F15;
        case "F16":
            return KeyEvent.VK_F16;
        case "F17":
            return KeyEvent.VK_F17;
        case "F18":
            return KeyEvent.VK_F18;
        case "F19":
            return KeyEvent.VK_F19;
        case "F20":
            return KeyEvent.VK_F20;
        case "F21":
            return KeyEvent.VK_F21;
        case "F22":
            return KeyEvent.VK_F22;
        case "F23":
            return KeyEvent.VK_F23;
        case "F24":
            return KeyEvent.VK_F24;
        /*
         * 各功能键
         */
        //ESC
        case "esc":
            return KeyEvent.VK_ESCAPE;
        //TAB
        case "tab":
            return KeyEvent.VK_TAB;
        //CapsLock
        case "capslock":
            return KeyEvent.VK_CAPS_LOCK;
        //Shift
        case "shift":
            return KeyEvent.VK_SHIFT;
        //Ctrl
        case "ctrl":
            return KeyEvent.VK_CONTROL;
        //Alt
        case "alt":
            return KeyEvent.VK_ALT;
        //Enter
        case "enter":
            return KeyEvent.VK_ENTER;
        //BackSpace
        case "backspace":
            return KeyEvent.VK_BACK_SPACE;
        //Space
        case "space":
            return KeyEvent.VK_SPACE;
        //Home
        case "home":
            return KeyEvent.VK_HOME;
        //End
        case "end":
            return KeyEvent.VK_END;
        //Page_Up 和 Page_Dwon
        case "page_up":
            return KeyEvent.VK_PAGE_UP;
        case "page_down":
            return KeyEvent.VK_PAGE_DOWN;
        //方向键
        case "up":
            return KeyEvent.VK_UP;
        case "down":
            return KeyEvent.VK_DOWN;
        case "left":
            return KeyEvent.VK_LEFT;
        case "right":
            return KeyEvent.VK_RIGHT;
        //小键盘
        case "numlock":
            return KeyEvent.VK_NUM_LOCK;
        }

        return 0;
    }

    //延时
    public void delay(int dd){
        r.delay(dd);
    }
        
    //点击鼠标
    public void mouseDown(int i){
        /*
        if(i==0){
            r.mousePress(KeyEvent.BUTTON1_MASK);//左键
        }else if(i==1){
            r.mousePress(KeyEvent.BUTTON3_MASK);//右键
        }else if(i==2){
            r.mousePress(KeyEvent.BUTTON2_MASK);//中键
        }
        */
        r.mousePress(i);
    }
    //释放鼠标
    public void mouseUp(int i){
        /*
        if(i==0){
            r.mouseRelease(KeyEvent.BUTTON1_MASK);//左键
        }else if(i==1){
            r.mouseRelease(KeyEvent.BUTTON3_MASK);//右键
        }else if(i==2){
            r.mouseRelease(KeyEvent.BUTTON2_MASK);//中键
        }
        */
        r.mouseRelease(i);
    }
    //移动鼠标
    public void mouseMove(int x,int y){
        r.mouseMove(x, y);
    }
    //滑动鼠标中键
    public void mouseMiddle(int length){
        r.mouseWheel(length);
    }
    //点击鼠标,版本2
    public void mouseClick(int i,boolean click){
        if(click){
            //单击
            mouseDown(i);
            mouseUp(i);
        }else{
            //双击
            mouseDown(i);
            mouseUp(i);
            mouseDown(i);
            mouseUp(i);
        }
    }

    //按下键盘
    public void keyDown(int key){
        r.keyPress(key);
    }
    //放开键盘
    public void keyUp(int key){
        r.keyRelease(key);    
    }
    
    //获取像素
    public RGB getRGB(int x,int y){
        Color color=r.getPixelColor(x, y);
        return new RGB(color.getRed(),color.getGreen(),color.getBlue());
    }
    
    //获取截图
    public void screenShot(int x,int y,int width,int height,String fileName){
        Rectangle rec=new Rectangle();
        rec.setBounds(x, y,width, height);
        BufferedImage image = r.createScreenCapture(rec);
        try {
            ImageIO.write(image, "png", new File(fileName));
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
    
    
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: