利用Robot類實現自動操作,實現效果是運行之后鼠標自動定位到整個屏幕坐標系的(635,454)位置,輸入wangtianze
1 package com.wtz.util; 2 3 import java.awt.AWTException; 4 import java.awt.Robot; 5 import java.awt.event.InputEvent; 6 import java.awt.event.KeyEvent; 7 8 /** 9 * @author wangtianze QQ:864620012 10 * @date 2017年4月16日 上午1:20:32 11 * <p>description:Robot測試類,實現效果是運行之后鼠標自動定位到整個屏幕坐標系的(635,454)位置,輸入wangtianze</p> 12 */ 13 public class RobotTest { 14 public static void main(String[] args){ 15 try { 16 Robot robot = new Robot(); 17 //鼠標移動到坐標(635,454) 18 RobotTest.clickMouse(robot, 635, 454, 500); 19 20 int[] keys = { 21 KeyEvent.VK_W,KeyEvent.VK_A, 22 KeyEvent.VK_N,KeyEvent.VK_G, 23 KeyEvent.VK_T,KeyEvent.VK_I, 24 KeyEvent.VK_A,KeyEvent.VK_N, 25 KeyEvent.VK_Z,KeyEvent.VK_E}; 26 robot.delay(500); 27 RobotTest.pressKey(robot,keys,500); 28 } catch (AWTException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 } 32 } 33 34 public static void pressKey(Robot robot,int[] keys,int delay){ 35 for(int i=0;i<keys.length;i++){ 36 robot.keyPress(keys[i]); 37 robot.keyRelease(keys[i]); 38 robot.delay(500); 39 } 40 //處理完需要延遲 41 robot.delay(delay); 42 } 43 44 public static void clickMouse(Robot robot,int x,int y,int delay){ 45 robot.mouseMove(x, y); 46 robot.delay(500); 47 robot.mousePress(InputEvent.BUTTON1_MASK); 48 robot.mouseRelease(InputEvent.BUTTON1_MASK); 49 robot.delay(delay); 50 } 51 }
利用Robot類實現監控屏幕,實現效果是運行后每隔50微秒獲取當前屏幕圖像,顯示到JFrame內
1 package com.wtz.util; 2 3 import java.awt.AWTException; 4 import java.awt.Dimension; 5 import java.awt.Graphics2D; 6 import java.awt.Rectangle; 7 import java.awt.RenderingHints; 8 import java.awt.Robot; 9 import java.awt.Toolkit; 10 import java.awt.image.BufferedImage; 11 12 import javax.swing.ImageIcon; 13 import javax.swing.JFrame; 14 import javax.swing.JLabel; 15 16 /** 17 * @author wangtianze QQ:864620012 18 * @date 2017年4月16日 下午4:43:11 19 * <p>description:Robot實現監控屏幕,實現效果是每隔50微秒獲取當前屏幕圖像,顯示到JFrame內</p> 20 */ 21 public class RobotScreenTest { 22 public static void main(String[] args){ 23 try { 24 Robot robot = new Robot(); 25 JFrame jframe = new JFrame(); 26 //設置標題 27 jframe.setTitle("wangtianze監控屏幕工具"); 28 JLabel label = new JLabel(); 29 jframe.add(label); 30 jframe.setSize(800,600); 31 //設置可見 32 jframe.setVisible(true); 33 //設置置頂 34 jframe.setAlwaysOnTop(true); 35 //控制台退出模式 36 jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 37 //獲取屏幕大小 38 Toolkit toolkit = Toolkit.getDefaultToolkit(); 39 Dimension dm = toolkit.getScreenSize(); 40 while(true){ 41 //一個矩形面板 42 Rectangle rec = new Rectangle(0, 0, (int)dm.getWidth(), (int)dm.getHeight()); 43 //按照矩形截取圖片到緩沖流 44 BufferedImage img = robot.createScreenCapture(rec); 45 //縮放圖片 46 BufferedImage newImg = RobotScreenTest.resize(img, jframe.getWidth(), jframe.getHeight()); 47 label.setIcon(new ImageIcon(newImg)); 48 try { 49 Thread.sleep(50); 50 } catch (InterruptedException e) { 51 // TODO Auto-generated catch block 52 e.printStackTrace(); 53 } 54 } 55 } catch (AWTException e) { 56 // TODO Auto-generated catch block 57 e.printStackTrace(); 58 } 59 } 60 61 public static BufferedImage resize(BufferedImage img, int newW, int newH){ 62 int w = img.getWidth(); 63 int h = img.getHeight(); 64 //創建一個縮放后的圖片流 65 BufferedImage newImg = new BufferedImage(newW,newH,img.getType()); 66 Graphics2D g = newImg.createGraphics(); 67 //設置模式 68 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR); 69 //按比例縮放 70 g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); 71 g.dispose(); 72 return newImg; 73 } 74 }