java借助Robot给微信好友自动发消息(可发送表情包)

这个其实不光微信,QQ也是可以的,想一下平时如果想刷屏群聊,聊天不爽了想骂回去,惹女朋友生气了想不停的道歉,或者每天定时问候一下,这些如果都要自己手动操作也太麻烦了吧,还不如写一个程序解决了呢。(等等,我哪里来的女朋友)
在这里插入图片描述
好了,下面直接上代码了:

先导入maven依赖,主要是用来实现微信窗口置顶的jar包:

		<dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version></dependency><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna-platform</artifactId><version>5.5.0</version></dependency>

接下来就是编码了:

/*** @author jinghuaixin* @date 2020/05/14*/
public class RobotUtil {private static Robot robot;private static Clipboard clip;private static Toolkit kit;public static void main(String[] args) throws AWTException {// 微信窗口置顶成功if (topWeChat()) {// 初始化init();// 指定需要发送消息的联系人/群组queryItemForSendMessage("文件传输助手"); // 微信昵称/群名// 发送字符串消息// for (int i = 0; i < 3; i++) { // 循环发送sendStrMessage("你好吗");// }// 发送图片消息sendImgMessage("exceltest.jpg"); // 表情包的路径}}/*** 置顶微信窗口* * @return*/public static boolean topWeChat() {boolean flag = true;WinDef.HWND hwnd = User32.INSTANCE.FindWindow(null, "微信");if (hwnd == null) {flag = false;System.out.println("not running");} else {User32.INSTANCE.ShowWindow(hwnd, 9);User32.INSTANCE.SetForegroundWindow(hwnd); // bring to front}return flag;}/*** 初始化全局变量* */private static void init() {try {robot = new Robot();} catch (AWTException e) {robot = null;e.printStackTrace();}kit = Toolkit.getDefaultToolkit();clip = kit.getSystemClipboard();}/*** 查找需要发送消息的人员/群组* * @param userName*/public static void queryItemForSendMessage(String itemName) {if (robot == null) {return;}robot.delay(2000); // 给窗口置顶预留时间// 模拟在微信上进行Ctrl+F进行查询操作robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_F);robot.keyRelease(KeyEvent.VK_CONTROL); // 是否Ctrl键// 将字符串放到剪切板内,相当于做了一次复制操作Transferable tText = new StringSelection(itemName);clip.setContents(tText, null);// 以下两行按下了ctrl+v,完成粘贴功能robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_CONTROL);// 释放ctrl按键,像ctrl,退格键,删除键这样的功能性按键,在按下后一定要释放,不然会出问题。crtl如果按住没有释放,在按其他字母按键是,敲出来的回事ctrl的快捷键。robot.keyPress(KeyEvent.VK_ENTER); // 按下enter键进行查询robot.delay(2000); // 预留查询时间robot.keyPress(KeyEvent.VK_ENTER); // 再次按下enter键进行选中robot.delay(1000);}/*** 发送字符串消息* * @param message*/public static void sendStrMessage(String message) {if (robot == null) {return;}// 将字符串放到剪切板内,相当于做了一次复制操作Transferable tText = new StringSelection(message);clip.setContents(tText, null);// 以下两行按下了ctrl+v,完成粘贴功能robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_CONTROL);// 释放ctrl按键,像ctrl,退格键,删除键这样的功能性按键,在按下后一定要释放,不然会出问题。crtl如果按住没有释放,在按其他字母按键是,敲出来的回事ctrl的快捷键。robot.keyPress(KeyEvent.VK_ENTER); // 按下enter键进行消息发送robot.delay(1000);}/*** 发送字符串消息* * @param message*/public static void sendImgMessage(String imgPath) {if (robot == null) {return;}// 将字符串放到剪切板内,相当于做了一次复制操作Transferable tImg = new ImageSelection(kit.getImage(imgPath));clip.setContents(tImg, null);// 以下两行按下了ctrl+v,完成粘贴功能robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_CONTROL);// 释放ctrl按键,像ctrl,退格键,删除键这样的功能性按键,在按下后一定要释放,不然会出问题。crtl如果按住没有释放,在按其他字母按键是,敲出来的回事ctrl的快捷键。robot.keyPress(KeyEvent.VK_ENTER); // 按下enter键进行消息发送robot.delay(1000);}}
/*** 自定义Transferable实现类实现图片复制到剪切板* * @date 2020/05/14*/
class ImageSelection implements Transferable {private Image image;public ImageSelection(Image image) {this.image = image;}// Returns supported flavorspublic DataFlavor[] getTransferDataFlavors() {return new DataFlavor[] {DataFlavor.imageFlavor};}// Returns true if flavor is supportedpublic boolean isDataFlavorSupported(DataFlavor flavor) {return DataFlavor.imageFlavor.equals(flavor);}// Returns imagepublic Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {if (!DataFlavor.imageFlavor.equals(flavor)) {throw new UnsupportedFlavorException(flavor);}return image;}
}

代码也没有什么好说的,是借助java的Robot类模拟人对键盘进行的操作,思路就是:

1.如果微信打开了则进行微信窗口置顶
2.模拟Ctrl+F进入搜索,输入搜索内容,按Enter键搜索,再次按下Enter键选中搜索出来的人员/群组
3.发送消息

具体操作,代码里面注释已经写得很清楚了,如果想要刷屏,加个循环,循环调用发送消息函数就可以了。

运行程序就可以看到,消息发送成功了:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45819.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序+爬虫制作一个表情包小程序

跟朋友聊天斗图失败气急败坏的我选择直接制作一个爬虫表情包小程序,从源头解决问题,从此再也不用担心在斗图中落入下风 精彩专栏持续更新↓↓↓ 微信小程序实战开发专栏 一、API1.1 项目创建1.2 图片爬虫帮助类1.3 测试窗体1.4 接口封装1.5 请求说明1.6 请求示例二、小程序2.…

斗图?教你用Python制作表情包

作者 | Ahab 来源 | Ahab杂货铺 (ID&#xff1a;AhabBin&#xff09; “表情包”是现在非常流行的交流方式&#xff0c;通过一张图片就能把文字不能表达或不便于表达的情感给表示出来&#xff0c;表情包一经诞生&#xff0c;就统治了中国人的社交圈&#xff0c;尤其是年轻人&a…

斗图吗?教你用Python来制作表情包

“表情包”是现在非常流行的交流方式&#xff0c;通过一张图片就能把文字不能表达或不便于表达的情感给表示出来&#xff0c;现在年轻人的社交方式是所谓“天可不聊&#xff0c;图不可不斗”&#xff0c;几乎任何对话都会出现表情包的身影&#xff0c;一言不合就斗图 今天呢&am…

表情包系列(一):程序员专属的可爱搞笑表情包+段子,进来看一看......

前文 日常欢乐&#xff1a;作为程序员的你们&#xff0c;BUG虽然改不断&#xff0c;但是我们的快乐源泉不能少&#xff01;&#xff01; 正文 经过亲们的强烈要求 已经为大家搭建了最新最全的程序员搞笑段子宝藏表情包库。 每天都会日常更新!准备做个系列啦。 每天精选优…

smtp 发送邮件(qq邮箱)失败

项目用的框架是 ThinkPHP&#xff0c;在本地WAMP环境下使用了QQ邮箱的 smtp 邮件系统 本地测试成功的情况下&#xff0c;部署到服务器上无法发送邮件&#xff0c;报错&#xff1a;500 解决方法 最终发现是端口号的原因&#xff0c;QQ邮箱的 smtp 服务端口号为 465 或 587&#…

remote: 认证失败,请确认您输入了正确的账号密码。 fatal: Authentication failed

问题描述&#xff1a;remote: Coding 提示: Authentication failed! 认证失败&#xff0c;请确认您输入了正确的账号密码 解决方案&#xff1a; 1、在控制面板里找到凭据管理器 2、更新密码 3、重新拉取代码成功

foxmail添加QQ邮箱失败 :ssl连接错误, errorCode: 5

背景&#xff1a;foxmail添加QQ邮箱失败 错误提示:ssl连接错误, errorCode: 5 添加步骤&#xff1a; 1、QQ邮箱 设置—>账户—>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务&#xff0c;开启POP3&#xff0c;发送获取授权码的短信&#xff0c;获取到授权码 2、在foxmail中…

qq邮箱foxmail imap服务器,foxmail登录imap服务器提示失败。怎么办?

满意答案 uisi3535 2012.12.04 采纳率&#xff1a;56% 等级&#xff1a;2 已帮助&#xff1a;28377人 Foxmail设置&#xff1a;(以foxmail6.5为例) 一、打开(OPEN) Foxmail&#xff0c;单击“email”菜单中的“新建email帐户”&#xff1b; 二、进去 Foxmail 向导&#xff0…

使用手机自带邮箱客户端无法登录163邮箱,提示:鉴权失败

在使用手机登录163邮箱时&#xff0c;报上述错误&#xff0c; 解决办法是&#xff1a; 重置授权码后&#xff0c;使用重置的授权码作为客户密码进行登录&#xff0c;即可。

提交信息与gerrit邮箱认证失败,无法提交代码到gerrit问题

提交信息与gerrit邮箱认证失败&#xff0c;无法提交代码到gerrit问题&#xff1a; 首先看截图&#xff0c;本地提交记录里边有一个提交的commiter的邮箱与其他不同&#xff0c;导致提交到远程gerrit上边时邮箱验证无法通过&#xff0c;故无法提交。1.问题出现原因 之前有过…

解决azkaban使用腾讯企业邮箱发邮件失败问题

1、问题&#xff1a;azkaban配置好腾讯的企业邮箱作为邮件发送者&#xff0c;但是zakaban的web后台直接报错误&#xff0c;连接超时&#xff1a; javax.mail.MessagingException: Exception reading response; 13051- nested exception is: 13052- java.net.SocketTimeoutExc…

解决simnow客户端登录报CTP:客户端认证失败

新申请的账号&#xff0c;第一次登录客户端时报CTP:客户端认证失败 解决&#xff1a;首页重置密码&#xff0c;用重置后的密码重新在客户端登录即可。

虚拟卡 | 玩转Drop shipping速卖通采购用什么虚拟卡?

#速卖通 #速卖通采购 #虚拟卡 #虚拟信 芯用卡腾讯信联VIE2277虚拟卡速卖通采购账号大额购物扣费跨境双币虚拟卡 DROP SHIPING是供应链管理中的一种方法。零售商无需商品库存&#xff0c;而是把客户订单和装运细节给批发商&#xff0c;供货商将货物直接发送给最终客户。而零售商…

[转]全球付虚拟卡申请流程~

转自:http://jy.smzdm.com/detail/18235 小编注:Global Cash的服务让大家多了一个有效的支付渠道,但根据之前海淘妹子年前的调研,其在实际使用过程中可能会出现以下问题,希望大家积极讨论。 1.充值的时候收取手续费的透明度有待提高。2.如果使用该账户支付后仍然被砍单等遇…

聪明的电教员程序(C++)

您好&#xff0c;陌生人。欢迎阅读此篇文章&#xff01; 情景导入 众所周知&#xff0c;在 宇宙 - 银河系 - 太阳系 - 地球 - 中国 - 湖北省 - 宜昌市 - 高新区 - 金东方初级中学&#xff0c;这个半年学费就是24000元&#xff0c;在宜昌市号称硬件设施高端的私立中学中&#xf…

chatGPT 学习分享:内含PPT分享下载

InstructGPT论文地址&#xff1a; Training language models to follow instructions with human feedbackchatGPT地址&#xff1a;openAI个人整理的PPT&#xff08;可编辑&#xff09;&#xff0c;下载地址&#xff1a;chatGPT学习分享PPT

国内热门AI智能音箱品牌都采用了哪些功放芯片

音频功放IC是各类音响、耳机等器材不可或缺的一部分&#xff1b;音频功率放大器芯片俗称“扩音器”&#xff0c;是音响系统中最基本的设备&#xff0c;负责将来自信号源的微弱电信号进行放大&#xff0c;以驱动扬声器发声&#xff0c;从而将声音传至我们的听觉系统。 现如今&a…

智能插座基础版能否接入Home Assistant智能平台?

声明&#xff1a; 转载自&#xff1a;http://bbs.xiaomi.cn/t-13447480-n7 如题,请问能否给小米智能插座基础版&#xff08;wifi版&#xff09;能否开放api接口&#xff0c;目前在用的Home Assistant是一个开源的智能平台&#xff0c;上面支持的智能设备和智能联动场景灵活多样…

大华NVR接入海康摄像机的设置

海康摄像头接入大华NVR是需要配置的&#xff0c;否则会显示网络错误。 1、登陆摄像头IP&#xff08;一般海康初始IP是192.168.1.64&#xff0c;可以登陆官网下载设备搜索工具&#xff09;。 2、如果需要接入NVR&#xff0c;首先需要在高级配置中选中启用onvif协议&#xff0c;…

ONVIF方式将大华摄像头接入海康威视录像机

ONVIF方式将大华摄像头接入海康威视录像机 一、大华摄像头启用ONVIF,录像机添加后可通过云台控制方向 二、大华摄像头添加新的ONVIF用户 三、海康威视录像机添加摄像头