码迷,mamicode.com
首页 > 编程语言 > 详细

java实现自动化工具

时间:2020-04-01 19:48:26      阅读:394      评论:0      收藏:0      [点我收藏+]

标签:rectangle   package   实现   定时   util   提示   内容   screens   image   

各位读者,大家好!

    下来我给大家带来我珍藏多年的珍品。

    java自动化工具类,包含鼠标单击、双击、右击、按键、组合按键、剪贴板、提示框、提示音、截屏、屏幕大小、坐标等等。

    基本上涵盖了所有的人为行为,比如用这个工具我们可以实现自动化定时截屏、自动化发送消息等等。

    想想是不是很炫,哈哈哈。作为一个程序?,在很短时间内就可以实现大量重复的工作,比如生成代码、填写报文等等繁琐又无趣的事情。

    接下来就给大家奉献工具源码MKAutoKit:

  

  1 package com.cheng2839.utils;
  2 
  3 import com.clb.util.auto.Logger;
  4 
  5 import javax.imageio.ImageIO;
  6 import javax.swing.*;
  7 import java.awt.*;
  8 import java.awt.datatransfer.Clipboard;
  9 import java.awt.datatransfer.DataFlavor;
 10 import java.awt.datatransfer.StringSelection;
 11 import java.awt.datatransfer.Transferable;
 12 import java.awt.datatransfer.UnsupportedFlavorException;
 13 import java.awt.image.BufferedImage;
 14 import java.io.File;
 15 import java.io.IOException;
 16 
 17 /**
 18  * 自动化工具:自动操作鼠标、键盘等
 19  * 包含鼠标单击、双击、右击、按键、组合按键、剪贴板、提示框、提示音、截屏、屏幕大小、坐标等等。
 20  * @author cheng2839
 21  * @2018年11月16日
 22  */
 23 public class MKAutoKit {
 24     private static Robot robot = null;
 25 
 26     static
 27     {
 28         try
 29         {
 30             robot = new Robot();
 31         } catch (AWTException e) {
 32             e.printStackTrace();
 33         }
 34     }
 35 
 36     /**
 37      * 点击
 38      * @param x
 39      * @param y
 40      * @author cheng2839
 41      * @2018年11月16日
 42      */
 43     public static void leftClick(int x, int y)
 44     {
 45         robot.mouseMove(x, y);
 46         robot.mousePress(16);
 47         sleep(10L);
 48         robot.mouseRelease(16);
 49     }
 50 
 51     /**
 52      * 右击
 53      * @param x
 54      * @param y
 55      * @author cheng2839
 56      * @2018年11月16日
 57      */
 58     public static void rightClick(int x, int y)
 59     {
 60         robot.mouseMove(x, y);
 61         robot.mousePress(8);
 62         sleep(10L);
 63         robot.mouseRelease(8);
 64     }
 65 
 66     /**
 67      * 按键
 68      * @param keyCode
 69      * @author cheng2839
 70      * @2018年11月16日
 71      */
 72     public static void key(int keyCode)
 73     {
 74         robot.keyPress(keyCode);
 75         sleep(10L);
 76         robot.keyRelease(keyCode);
 77     }
 78 
 79     /**
 80      * 组合按键
 81      * @param keyCodes
 82      * @author cheng2839
 83      * @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      * @author cheng2839
100      * @2018年11月16日
101      */
102     public static Point x_y()
103     {
104         return MouseInfo.getPointerInfo().getLocation();
105     }
106 
107     /**
108      * 获取剪贴板内容
109      * @return
110      * @author cheng2839
111      * @2018年11月16日
112      */
113     public static String 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      * @author cheng2839
137      * @2018年11月16日
138      */
139     public static void beep()
140     {
141         Toolkit.getDefaultToolkit().beep();
142     }
143 
144     /**
145      * 设置剪贴板
146      * @param data
147      * @author cheng2839
148      * @2018年11月16日
149      */
150     public static void setClipboard(String data)
151     {
152         Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
153         StringSelection selection = new StringSelection(data);
154         clipboard.setContents(selection, null);
155     }
156 
157     /**
158      * 鼠标移动监听
159      * @param mills
160      * @author cheng2839
161      * @2018年11月16日
162      */
163     public static void mouseMove(long mills)
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      * sleep
181      * @param millis
182      * @author cheng2839
183      * @2018年11月16日
184      */
185     public static void sleep(long millis)
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      * @author cheng2839
201      * @2018年11月16日
202      */
203     public static Dimension getScreenSize()
204     {
205         return Toolkit.getDefaultToolkit().getScreenSize();
206     }
207 
208     /**
209      * 弹框提示
210      * @param message
211      * @author cheng2839
212      * @2018年11月16日
213      */
214     public static void showTip(String message)
215     {
216         JOptionPane.showMessageDialog(null, message, "tip", -1);
217     }
218 
219     /**
220      * 截取全屏并保存为图片
221      * @param imgPath
222      * @return
223      * @author cheng2839
224      * @2018年11月16日
225      */
226     public static File getScreenImg(String imgPath)
227     {
228         BufferedImage image = robot.createScreenCapture(new Rectangle(getScreenSize()));
229         try
230         {
231             File imgFile = new File(imgPath);
232             ImageIO.write(image, "JPG", imgFile);
233             return imgFile;
234         }
235         catch (IOException e)
236         {
237             e.printStackTrace();
238         }
239         return null;
240     }
241 }

 

   源码归本人所有,如需转载,请标注出处。

 

我还是忍不住放上了这张图片,万一你想和我说说话呢???

技术图片

 

 

java实现自动化工具

标签:rectangle   package   实现   定时   util   提示   内容   screens   image   

原文地址:https://www.cnblogs.com/cheng2839/p/12614460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!