java實現自動化工具


各位讀者,大家好!

    下來我給大家帶來我珍藏多年的珍品。

    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 }

 

   源碼歸本人所有,如需轉載,請標注出處。

 

我還是忍不住放上了這張圖片,萬一你想和我說說話呢😄❀

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM