这个其实不光微信,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.发送消息

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

运行程序就可以看到,消息发送成功了:

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

  1. 给微信好友自动发消息

    from __future__ import unicode_literals from threading import Timer from wxpy import * import reques ...

  2. python脚本给微信好友自动发晚安消息

    一.引言 做这个的原因是因为有一个朋友特别喜欢熬夜,所以就写一个脚本,每天晚上定时提醒Ta睡觉.网上找了点资料,在别人基础上改了一下.效果图如下(视频放不了,gif过大): 二.python源代码 i ...

  3. python微信自动发消息_如何利用python3实现微信定时自动发消息和图片?

    python代码: import itchat import time itchat.auto_login(hotReload=True) AutoList = [""," ...

  4. 微信机器人自动发消息提醒

    首先需要安装wechat_sender. pip install wechat-sender pip install wxpy itchat requests 创建一个send_msg.py文件并写入 ...

  5. 如何使用Java快速失去一个微信好友

    如何使用Java快速失去一个微信好友 参考:[Java]指定[微信]好友自动发送消息 使用要求 1.正常Java环境 2.电脑登录微信 代码 代码在最后,直接copy就行,都有注释,照着注释改main ...

  6. python 微信聊天机器人_python操作微信自动发消息的实现(微信聊天机器人)

    前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...

  7. 企业微信群机器人是什么?企微机器人如何自动发消息?

    经常有很多用户会问我们,企业微信群机器人是什么,有什么用,有什么限制?企业微信群机器人提供的是一个webhook消息,如何可以通过这个来自动发消息呢?之前写过一些关于企业微信群机器人如何发消息的教程, ...

  8. python操作微信自动发消息(微信聊天机器人)

    前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...

  9. 钉钉机器人自动回复消息_微信pc客户端自动发消息(微信聊天机器人)

    前言 另外此文章首先发在了csdn有兴趣的可以去看一下:https://blog.csdn.net/qq_27399/article/details/105767682 最近在学习python,发现一 ...

最新文章

  1. c语言头文件中定义inline static相关函数的优劣
  2. AI开发者大会:2020年7月3日09:50--10:10唐杰《人工智能的下一个十年》
  3. rust实战入门到进阶(4)
  4. 【Java类加载机制】深入加载器
  5. 数学--数论--HDU 2674 沙雕题
  6. 拒绝CPU挖矿矿工有责
  7. C++string容器-字符串比较
  8. java消费rabbitMQ队列消息
  9. ssl证书的生成与签名
  10. ORB_SLAM2中的疑难杂症
  11. cocos2d-x学习笔记10:动作3:补间动作
  12. IIS 管理器无法验证此内置帐户是否有访问权
  13. 2021 年“认证杯”数学中国数学建模网络挑战赛 B题解题思路
  14. selenium 接管浏览器
  15. java文件上传,返回访问url
  16. 电脑没有“立体声混音”设备怎么办,虚拟声卡安装教程
  17. Android分享wifi给电脑,安卓手机怎么通过USB共享网络给mac电脑
  18. 计算机组成RAW相关,计算机组成和系统结构习题解答.ppt
  19. SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件
  20. 北京近期校园招聘java_JAVA研发工程师-校招,北京

热门文章

  1. 地平线与比亚迪加速智能汽车量产;波士顿科学向成都企业转移技术;摩贝与伊利签署合作协议 | 美通企业周刊...
  2. android fsck,Android Vold 随笔之fsck
  3. 水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符\n
  4. 1javascript语法
  5. 2021年12月电子学会图形化一级编程题解析含答案:下雨
  6. java体温_java实现体温单实例-eclipse-java工程
  7. MIPI2LVDS芯片TC358774XBG寄存器查看与调试
  8. 笨办法学Python(零)
  9. B样条基函数的定义及系数的意义
  10. 中国石油大学《 电工电子学(含模拟实验)》第一阶段在线作业