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.发送消息
具体操作,代码里面注释已经写得很清楚了,如果想要刷屏,加个循环,循环调用发送消息函数就可以了。
运行程序就可以看到,消息发送成功了:
java借助Robot给微信好友自动发消息(可发送表情包)相关推荐
- 给微信好友自动发消息
from __future__ import unicode_literals from threading import Timer from wxpy import * import reques ...
- python脚本给微信好友自动发晚安消息
一.引言 做这个的原因是因为有一个朋友特别喜欢熬夜,所以就写一个脚本,每天晚上定时提醒Ta睡觉.网上找了点资料,在别人基础上改了一下.效果图如下(视频放不了,gif过大): 二.python源代码 i ...
- python微信自动发消息_如何利用python3实现微信定时自动发消息和图片?
python代码: import itchat import time itchat.auto_login(hotReload=True) AutoList = [""," ...
- 微信机器人自动发消息提醒
首先需要安装wechat_sender. pip install wechat-sender pip install wxpy itchat requests 创建一个send_msg.py文件并写入 ...
- 如何使用Java快速失去一个微信好友
如何使用Java快速失去一个微信好友 参考:[Java]指定[微信]好友自动发送消息 使用要求 1.正常Java环境 2.电脑登录微信 代码 代码在最后,直接copy就行,都有注释,照着注释改main ...
- python 微信聊天机器人_python操作微信自动发消息的实现(微信聊天机器人)
前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...
- 企业微信群机器人是什么?企微机器人如何自动发消息?
经常有很多用户会问我们,企业微信群机器人是什么,有什么用,有什么限制?企业微信群机器人提供的是一个webhook消息,如何可以通过这个来自动发消息呢?之前写过一些关于企业微信群机器人如何发消息的教程, ...
- python操作微信自动发消息(微信聊天机器人)
前言 最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已 ...
- 钉钉机器人自动回复消息_微信pc客户端自动发消息(微信聊天机器人)
前言 另外此文章首先发在了csdn有兴趣的可以去看一下:https://blog.csdn.net/qq_27399/article/details/105767682 最近在学习python,发现一 ...
最新文章
- c语言头文件中定义inline static相关函数的优劣
- AI开发者大会:2020年7月3日09:50--10:10唐杰《人工智能的下一个十年》
- rust实战入门到进阶(4)
- 【Java类加载机制】深入加载器
- 数学--数论--HDU 2674 沙雕题
- 拒绝CPU挖矿矿工有责
- C++string容器-字符串比较
- java消费rabbitMQ队列消息
- ssl证书的生成与签名
- ORB_SLAM2中的疑难杂症
- cocos2d-x学习笔记10:动作3:补间动作
- IIS 管理器无法验证此内置帐户是否有访问权
- 2021 年“认证杯”数学中国数学建模网络挑战赛 B题解题思路
- selenium 接管浏览器
- java文件上传,返回访问url
- 电脑没有“立体声混音”设备怎么办,虚拟声卡安装教程
- Android分享wifi给电脑,安卓手机怎么通过USB共享网络给mac电脑
- 计算机组成RAW相关,计算机组成和系统结构习题解答.ppt
- SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件
- 北京近期校园招聘java_JAVA研发工程师-校招,北京
热门文章
- 地平线与比亚迪加速智能汽车量产;波士顿科学向成都企业转移技术;摩贝与伊利签署合作协议 | 美通企业周刊...
- android fsck,Android Vold 随笔之fsck
- 水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符\n
- 1javascript语法
- 2021年12月电子学会图形化一级编程题解析含答案:下雨
- java体温_java实现体温单实例-eclipse-java工程
- MIPI2LVDS芯片TC358774XBG寄存器查看与调试
- 笨办法学Python(零)
- B样条基函数的定义及系数的意义
- 中国石油大学《 电工电子学(含模拟实验)》第一阶段在线作业