admin管理员组

文章数量:1574959

今天翻翻以前写过的娱乐的代码忽然看到个好玩的,今天这里分享一下。
java Robot 翻译过来就是java机器人的意思,能控制下鼠标啊键盘啊进行一些操作,先简单介绍一下robot的方法:

robot.createScreenCapture(screenRect);//创建包含从屏幕读取的像素的图像。
robot.delay(ms);//睡眠指定的时间。
robot.getPixelColor(x, y)//返回给定屏幕坐标处像素的颜色。
robot.isAutoWaitForIdle();//返回此机器人waitForIdle 在生成事件后是否自动调用。
robot.keyPress(keycode);//按一个给定的键。
robot.keyRelease(keycode);//释放给定的键。
robot.mouseMove(x, y);//将鼠标指针移动到给定的屏幕坐标。
robot.mousePress(buttons);//按下一个或多个鼠标按钮。
robot.mouseRelease(buttons);//释放一个或多个鼠标按钮。
robot.mouseWheel(wheelAmt);//旋转装有滚轮的鼠标上的滚轮。
robot.setAutoDelay(ms);//设置此机器人在生成事件后休眠的毫秒数。
robot.setAutoWaitForIdle(isOn);//设置此机器人waitForIdle 在生成事件后是否自动调用。

下面分享一段使用robot输入帐号密码实现登录邮箱的一段代码:

		Robot ro = new Robot();
		//获取屏幕分辨率
		int screenWidth=((int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().width);
		int screenHeight = ((int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().height);
		System.out.println("屏幕分辨率宽为:"+screenWidth+",高为:"+screenHeight);
		int moveScreenWidth= (int) (screenWidth -( (int)screenWidth * (0.5)));
		int movescreenHeight= (int) (screenHeight - ((int)screenHeight * (0.70)));
		System.out.println("yidong屏幕分辨率宽为:"+moveScreenWidth+",高为:"+movescreenHeight);

我这里简单计算了下帐号的输入框在屏幕上显示的坐标,当然也可以根据颜色等等去获取,全凭个人喜好和想法。(int)screenWidth * (0.5),整数和double乘除尽量不这么写,图个简便这里不详细介绍。

		//将鼠标移动到
		ro.mouseMove(moveScreenWidth, movescreenHeight);
		//双击鼠标左键
		ro.mousePress(KeyEvent.BUTTON1_DOWN_MASK);
		ro.mousePress(KeyEvent.BUTTON1_DOWN_MASK);

至于为什么双击下鼠标左键,这里说一下,主要是因为浏览器的浏览记录哈,如果登陆过这个网站并且保存过用户,输入框会有你的账号,如果不删除直接输入明显会报错的,双击会把输入框里的账号选中,输入框是空的也没关系

		//将账号放置到剪切板中
		Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
		clipboard.setContents(new StringSelection("账号"), null); 
		//ctrl+V  粘贴
		ro.keyPress(KeyEvent.VK_CONTROL); 
		ro.delay(100);
		ro.keyPress(KeyEvent.VK_V); 
		ro.keyRelease(KeyEvent.VK_V); 
		ro.delay(100);
		ro.keyRelease(KeyEvent.VK_CONTROL);
		ro.delay(300);

每个键用完一定要记得释放!!!

		//按下然后释放table键
		ro.keyPress(KeyEvent.VK_TAB);
		ro.keyRelease(KeyEvent.VK_TAB);
		ro.delay(100);
		clipboard.setContents(new StringSelection("密码"), null); 
		ro.delay(100);
		ro.keyPress(KeyEvent.VK_CONTROL); 
		ro.keyPress(KeyEvent.VK_V); 
		ro.delay(100);
		ro.keyRelease(KeyEvent.VK_V); 
		ro.keyRelease(KeyEvent.VK_CONTROL);
		ro.delay(100);
		//单机回车 随后释放回车键  如果回车登录没反应移动鼠标点击
		ro.keyPress(KeyEvent.VK_ENTER);
		ro.keyRelease(KeyEvent.VK_ENTER);

这就是一个简单的小操作。KeyEvent是java按键事件,两者搭配用,能做的事挺多的,比如QQ或者微信来个轰炸,比如抢个票,比如破解个wifi密码~

本文标签: 输入用户名键盘鼠标密码JavaRobot