1 packagecom.cheng2839.utils;2
3 importcom.clb.util.auto.Logger;4
5 importjavax.imageio.ImageIO;6 import javax.swing.*;7 import java.awt.*;8 importjava.awt.datatransfer.Clipboard;9 importjava.awt.datatransfer.DataFlavor;10 importjava.awt.datatransfer.StringSelection;11 importjava.awt.datatransfer.Transferable;12 importjava.awt.datatransfer.UnsupportedFlavorException;13 importjava.awt.image.BufferedImage;14 importjava.io.File;15 importjava.io.IOException;16
17 /**
18 * 自动化工具:自动操作鼠标、键盘等19 * 包含鼠标单击、双击、右击、按键、组合按键、剪贴板、提示框、提示音、截屏、屏幕大小、坐标等等。20 *@authorcheng283921 * @2018年11月16日22 */
23 public classMKAutoKit {24 private static Robot robot = null;25
26 static
27 {28 try
29 {30 robot = newRobot();31 } catch(AWTException e) {32 e.printStackTrace();33 }34 }35
36 /**
37 * 点击38 *@paramx39 *@paramy40 *@authorcheng283941 * @2018年11月16日42 */
43 public static void leftClick(int x, inty)44 {45 robot.mouseMove(x, y);46 robot.mousePress(16);47 sleep(10L);48 robot.mouseRelease(16);49 }50
51 /**
52 * 右击53 *@paramx54 *@paramy55 *@authorcheng283956 * @2018年11月16日57 */
58 public static void rightClick(int x, inty)59 {60 robot.mouseMove(x, y);61 robot.mousePress(8);62 sleep(10L);63 robot.mouseRelease(8);64 }65
66 /**
67 * 按键68 *@paramkeyCode69 *@authorcheng283970 * @2018年11月16日71 */
72 public static void key(intkeyCode)73 {74 robot.keyPress(keyCode);75 sleep(10L);76 robot.keyRelease(keyCode);77 }78
79 /**
80 * 组合按键81 *@paramkeyCodes82 *@authorcheng283983 * @2018年11月16日84 */
85 public static void keys(int[] keyCodes)86 {87 for (int i = 0; i < keyCodes.length; i++) {88 robot.keyPress(keyCodes[i]);89 }90 sleep(10L);91 for (int i = keyCodes.length - 1; i >= 0; i--) {92 robot.keyRelease(keyCodes[i]);93 }94 }95
96 /**
97 * 获取当前鼠标的坐标98 *@return
99 *@authorcheng2839100 * @2018年11月16日101 */
102 public staticPoint x_y()103 {104 returnMouseInfo.getPointerInfo().getLocation();105 }106
107 /**
108 * 获取剪贴板内容109 *@return
110 *@authorcheng2839111 * @2018年11月16日112 */
113 public staticString getClipboard()114 {115 Clipboard clipboard =Toolkit.getDefaultToolkit().getSystemClipboard();116 Transferable content = clipboard.getContents(null);117 if(content.isDataFlavorSupported(DataFlavor.stringFlavor)) {118 try
119 {120 return(String)content.getTransferData(DataFlavor.stringFlavor);121 }122 catch(UnsupportedFlavorException e)123 {124 e.printStackTrace();125 }126 catch(IOException e)127 {128 e.printStackTrace();129 }130 }131 return null;132 }133
134 /**
135 * 提示音136 *@authorcheng2839137 * @2018年11月16日138 */
139 public static voidbeep()140 {141 Toolkit.getDefaultToolkit().beep();142 }143
144 /**
145 * 设置剪贴板146 *@paramdata147 *@authorcheng2839148 * @2018年11月16日149 */
150 public static voidsetClipboard(String data)151 {152 Clipboard clipboard =Toolkit.getDefaultToolkit().getSystemClipboard();153 StringSelection selection = newStringSelection(data);154 clipboard.setContents(selection, null);155 }156
157 /**
158 * 鼠标移动监听159 *@parammills160 *@authorcheng2839161 * @2018年11月16日162 */
163 public static void mouseMove(longmills)164 {165 long time =System.currentTimeMillis();166 Point p =x_y();167 while (System.currentTimeMillis() - time <=mills)168 {169 Point newp =x_y();170 if ((newp.x != p.x) || (newp.y !=p.y)) {171 Logger.info("( " + newp.x + ", " + newp.y + " )");172 }173 p =newp;174 sleep(100L);175 }176 }177
178
179 /**
180 * sleep181 *@parammillis182 *@authorcheng2839183 * @2018年11月16日184 */
185 public static void sleep(longmillis)186 {187 try
188 {189 Thread.sleep(millis);190 }191 catch(InterruptedException e)192 {193 e.printStackTrace();194 }195 }196
197 /**
198 * 屏幕大小199 *@return
200 *@authorcheng2839201 * @2018年11月16日202 */
203 public staticDimension getScreenSize()204 {205 returnToolkit.getDefaultToolkit().getScreenSize();206 }207
208 /**
209 * 弹框提示210 *@parammessage211 *@authorcheng2839212 * @2018年11月16日213 */
214 public static voidshowTip(String message)215 {216 JOptionPane.showMessageDialog(null, message, "tip", -1);217 }218
219 /**
220 * 截取全屏并保存为图片221 *@paramimgPath222 *@return
223 *@authorcheng2839224 * @2018年11月16日225 */
226 public staticFile getScreenImg(String imgPath)227 {228 BufferedImage image = robot.createScreenCapture(newRectangle(getScreenSize()));229 try
230 {231 File imgFile = newFile(imgPath);232 ImageIO.write(image, "JPG", imgFile);233 returnimgFile;234 }235 catch(IOException e)236 {237 e.printStackTrace();238 }239 return null;240 }241 }