Robot实现自动打开QQ,自动给好友发送消息功能
应用场景:可以使用其制作定时发送推广的广告消息,估摸着那些节假日的问候有可能就是这玩儿意思实现的软件。
测试代码:
package com.noteshare.robot; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.event.KeyEvent; /** * Java小机器人打开记事本自己输入文字 * @author Wayss * */ public class TestInput { public static void main(String [] args) throws Exception{ Robot robot = new Robot(); //调用系统方法打开记事本 Runtime.getRuntime().exec("notepad"); robot.delay(2000); //全屏显示 keyPressWithAlt(robot,KeyEvent.VK_SPACE); //输入x keyPress(robot, KeyEvent.VK_X); //输入回车 keyPress(robot, KeyEvent.VK_ENTER); robot.delay(1000); //输入字符串 keyPressString(robot,"Hello, I'm Robot"); } //Shift组合键 public static void keyPressWithShift(Robot r,int key){ //按下Shift r.keyPress(KeyEvent.VK_SHIFT); //按下某个键 r.keyPress(key); //释放某个键 r.keyRelease(key); //释放Shift r.keyRelease(KeyEvent.VK_SHIFT); //等待100ms r.delay(100); } //Ctrl组合键 public static void keyPressWithCtrl(Robot r,int key){ r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(key); r.keyRelease(key); r.keyRelease(KeyEvent.VK_CONTROL); r.delay(100); } //Alt组合键 public static void keyPressWithAlt(Robot r ,int key){ r.keyPress(KeyEvent.VK_ALT); r.keyPress(key); r.keyRelease(key); r.keyRelease(KeyEvent.VK_ALT); r.delay(100); } //输入字符串 public static void keyPressString(Robot r ,String str){ //获取剪切板 Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); //将传入字符串封装下 Transferable tText = new StringSelection(str); //将字符串放入剪切板 clip.setContents(tText, null); //按下Ctrl+V实现粘贴文本 keyPressWithCtrl(r, KeyEvent.VK_V); r.delay(100); } //输入数字 public static void keyPressNumber(Robot r ,int number){ //将数字转成字符串 String str = Integer.toString(number); //调用字符串的方法 keyPressString(r,str); } //实现按一次某个按键 public static void keyPress(Robot r,int key){ //按下键 r.keyPress(key); //释放键 r.keyRelease(key); r.delay(1000); } //快速打开QQ消息(这个组合键因人而异) public static void keyPressAtlWithCtrlWithZ(Robot r){ r.keyPress(KeyEvent.VK_ALT); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_Z); r.keyRelease(KeyEvent.VK_Z); r.keyRelease(KeyEvent.VK_CONTROL); r.keyRelease(KeyEvent.VK_ALT); } //点击一下鼠标左键 public static void mouseLeftHit(Robot r){ r.mousePress(KeyEvent.BUTTON1_DOWN_MASK); r.mouseRelease(KeyEvent.BUTTON1_DOWN_MASK); r.delay(1000); } }
package com.noteshare.robot; import java.awt.AWTException; import java.awt.Desktop; import java.awt.Robot; import java.awt.event.KeyEvent; import java.io.File; import java.io.IOException; public class TestQQSendMsg { static Desktop deskapp = Desktop.getDesktop(); public static void main(String[] args) throws AWTException { openQQ(); inputQQ(); } public static void openQQ() { // 判断当前系统释放支持Desktop提供的接口 if (Desktop.isDesktopSupported()) { try { deskapp.open(new File("C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQScLauncher.exe")); } catch (IOException e) { e.printStackTrace(); } } } public static void inputQQ() throws AWTException { Robot robot = new Robot(); //等待3秒后开始执行下面的自动键盘事件 robot.delay(3000); //按下确认键进行qq登录 TestInput.keyPress(robot, KeyEvent.VK_ENTER); robot.delay(5000); // 点击鼠标左键(目的是让光标放到QQ上) //TestInput.mouseLeftHit(robot); //打开QQ聊天窗口 //TestInput.keyPressAtlWithCtrlWithZ(robot); robot.delay(1000); // 搜索我的手机 TestInput.keyPressString(robot, "我的手机"); robot.delay(1000); // 按下回车 TestInput.keyPress(robot, KeyEvent.VK_ENTER); robot.delay(1000); //输入要发送的消息 for (int i = 0; i < 10; i++) { TestInput.keyPressString(robot, "你好,打扰到你了,我是自动聊天机器人!"); TestInput.keyPress(robot, KeyEvent.VK_ENTER); } //点击enter键进行发送 TestInput.keyPress(robot, KeyEvent.VK_ENTER); } }
请您注意
·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款