1. 程式人生 > >java實現模擬滑鼠鍵盤操作

java實現模擬滑鼠鍵盤操作

 用java寫指令碼,首先需要用到Robot類 ,也就是機器人類。先new一個Robot物件然後呼叫裡面的方法 ,keyPress方法是按下鍵盤上的某個鍵,比如下面程式碼裡面寫的keyPress(KeyEvevt.VK_Y); 括號裡面VK後面的字母就是要按下的鍵,然後按下了需要彈起,在呼叫keyRelease方法,引數不變。

其次為了更像人,可以在按下彈起之間新增一個間隔時間,呼叫delay方法,引數是毫秒值。在第一個鍵跟第二個鍵之間也新增一個間隔時間,可以用Random類裡面的nextInt方法生成隨機數然後用Math類裡面的abs方法取絕對值再設定範圍,設定範圍的話以下面第一個程式碼為例子,Math.abs(random.nextInt())%100+50;與100進行取模運算結果是一百以內,然後在加上50,結果就是50到100毫秒之間。

滑鼠操作同樣是呼叫Robot類的方法,mouseMove()方法是移動滑鼠到指定座標點,引數有兩個,分別是橫座標個縱座標。

mousePress(InputEvent.BUTTON1_DOWN_MASK)方法是按下滑鼠左鍵,按下滑鼠右鍵和滾輪只需要把引數裡面的BUTTON後面的1改成2和3即可,2是按下滾輪,3是按下滑鼠右鍵。

mouseRelease(InputEvent.BUTTON1_DOWN_MASK)滑鼠擡起方法。

下面有兩個例子:

這個是一個自從打字併發送訊息的指令碼。在迴圈最後是按下了空格和回車鍵,是鍵入文字然後傳送的功能。

這個功能可以用在某些遊戲裡面 ,因為是通過jvm傳送請求給鍵盤並且加入了隨機停頓所以不會檢測到是外掛。

public static void main(String[] args) throws AWTException {
		Robot robot = new Robot();
		Random random = new Random();
		robot.delay(5000);
		int a = 0;
		while(true) {
			
			robot.keyPress(KeyEvent.VK_Y);
			robot.keyRelease(KeyEvent.VK_Y);
			a = Math.abs(random.nextInt())%100+50;
			robot.delay(a);
			
			robot.keyPress(KeyEvent.VK_B);
			robot.keyRelease(KeyEvent.VK_B);
			a = Math.abs(random.nextInt())%100+50;
			robot.delay(a);
			
			robot.keyPress(KeyEvent.VK_Q);
			robot.keyRelease(KeyEvent.VK_Q);
			a = Math.abs(random.nextInt())%100+50;
			robot.delay(a);
			
			robot.keyPress(KeyEvent.VK_U);
			robot.keyRelease(KeyEvent.VK_U);
			
			robot.keyPress(KeyEvent.VK_SPACE);
			robot.keyRelease(KeyEvent.VK_SPACE);
			
			robot.keyPress(KeyEvent.VK_ENTER);
			robot.keyRelease(KeyEvent.VK_ENTER);

			a = Math.abs(random.nextInt())%2000+1000;
			System.out.println(a);
			robot.delay(a);
		}
	}

移動滑鼠到指定座標位置並點選滑鼠左鍵的動作:

public static void main(String[] args) throws AWTException {
		
		Robot robot = new Robot();
		Random random = new Random();
		int a = 0;
		robot.delay(3000);
		
		robot.mouseMove(1200, 700);
		a = Math.abs(random.nextInt())%100+50;
		robot.delay(a);
		
		robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
		
		a = Math.abs(random.nextInt())%50+50;
		robot.delay(a);
		
		robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
	}