使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了

此程序在手再也不怕女朋友跟你闹了!!!!自从有了女朋友比如:早安、晚安之类的问候语可不能断,但是也难免有时候会忘记那么该咋么办呢?很简单写一个程序么,近日闲来无趣想着用Java写一个自动发送微信的小程序,实现定时给指定的好友发送指定的消息,这不就很Nice了?本文主要包括实现的思路、代码的实现、打包为jar快捷方式!

文章目录

  • 使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了
  • 先上效果图!!!
  • 1、实现原理
  • 2、代码实现
  • 3、打包程序
    • 3.1、鼠标右击项目名称
    • 3.2、选择Artifacts
    • 3.3、点击加号
    • 3.4、在Main Class中选择需要打包的类
    • 3.5、点击Build进行最后的打包
    • 3.6、jar包在out文件夹中
  • 4、运行Jar包
  • 如此便大功告成!!!
  • 参考资料

先上效果图!!!

1、实现原理

原理其实很简单用Java模拟快捷键发送消息:

  1. 利用Scanner实现键盘录入设置发送时间;
  2. Robot类模拟键盘输入,利用快捷键发送指定内容到微信聊天界面;
  3. 利用定时器Timer控制发送时间;

2、代码实现

import org.springframework.util.StringUtils;import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.KeyEvent;
import java.util.*;/*** @Author MT* @Date 2021/11/22 14:45* @Description: 发送微信消息*/public class SendMsg {//执行次数private static int count = 0;public static void main(String[] args) {System.out.println("开始执行----------");Scanner scanner = new Scanner(System.in);System.out.println("请设置需发送的好友昵称:");String friendNickName = scanner.next();System.out.println("请设置需发送的内容:");String content = scanner.next();System.out.println("请输入发送时间的小时:");Integer hour = scanner.nextInt();System.out.println("请输入发送时间的分钟:");Integer minute = scanner.nextInt();System.out.println("请输入发送时间的秒:");Integer second = scanner.nextInt();System.out.println("您设定的发送时间为" + hour + "时" + minute + "分" + second + "秒!!!");//执行时间Date date = getDate(hour, minute, second);//Timer定时器Timer timer = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {searchPerson(friendNickName, content);count++;System.out.println("共发送了" + count + "天!!!");}};//延迟date毫秒执行一次发送方法timer.schedule(task, date);}//获取执行时间public static Date getDate(Integer hour, Integer minute, Integer second) {//设置执行时间Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int day = calendar.get(Calendar.DAY_OF_MONTH);//每天calendar.set(year, month, day, hour, minute, second);Date date = calendar.getTime();//如果启动时间超过执行时间,则明天执行if (date.before(new Date())) {date = addDay(date, 1);}return date;}// 增加或减少天数public static Date addDay(Date date, int num) {Calendar startDT = Calendar.getInstance();startDT.setTime(date);startDT.add(Calendar.DAY_OF_MONTH, num);return startDT.getTime();}private static void searchPerson(String friendNickName, String content) {// 创建Robot对象Robot robot = getRobot();//打开微信 Ctrl+Alt+Wassert robot != null;robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_ALT);robot.keyPress(KeyEvent.VK_W);//释放Ctrl按键,像Ctrl,退格键,删除键这样的功能性按键,在按下后一定要释放robot.keyRelease(KeyEvent.VK_CONTROL);robot.keyRelease(KeyEvent.VK_ALT);// 该延迟不能少,否则无法搜索robot.delay(1000);// Ctrl + F 搜索指定好友robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_F);robot.keyRelease(KeyEvent.VK_CONTROL);// 将好友昵称发送到剪切板Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();Transferable tText = new StringSelection(friendNickName);clip.setContents(tText, null);// 以下两行按下了ctrl+v,完成粘贴功能robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_CONTROL);robot.delay(1000);robot.keyPress(KeyEvent.VK_ENTER);robot.delay(1000);// 发送消息try {sendMsg(content);} catch (InterruptedException e) {e.printStackTrace();}}private static void sendMsg(String content) throws InterruptedException {if (!content.equals("发送默认的信息")) {sendOneMsg(content);} else {String[] msgArr = {"能不能发","能不能","能","鸹貔","[Emm]",""};ArrayList<String> msgList = new ArrayList<>();int i = 1;while (i <= 10) {msgList.add("能不能发!");i++;}for (String item : msgList) {sendOneMsg(item);}Thread.sleep(2000);sendOneMsg("就问你能不能发!");sendOneMsg("[坏笑]");sendOneMsg("鸹貔");}}private static Robot getRobot() {// 创建Robot对象Robot robot = null;try {robot = new Robot();} catch (AWTException e) {e.printStackTrace();}return robot;}private static void sendOneMsg(String msg) {Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();Transferable tText;//创建Robot对象Robot robot = getRobot();//延迟十秒,主要是为了预留出打开窗口的时间,括号内的单位为毫秒if (null != robot) {robot.delay(500);tText = new StringSelection(msg);clip.setContents(tText, null);// 按下了ctrl+v,完成粘贴功能robot.keyPress(KeyEvent.VK_CONTROL);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_CONTROL);robot.delay(500);//回车发送消息robot.keyPress(KeyEvent.VK_ENTER);robot.delay(500);}}
}

3、打包程序

我这里用的是IDEA进行打包,也可以输入命令

3.1、鼠标右击项目名称

3.2、选择Artifacts

3.3、点击加号

3.4、在Main Class中选择需要打包的类

3.5、点击Build进行最后的打包

3.6、jar包在out文件夹中

4、运行Jar包

进入相应的目录运行jar(见3.6),之后就可以在规定的时间发送了;

命令:java -jar temp.jar

如此便大功告成!!!

参考资料

  • https://blog.csdn.net/LT11hka/article/details/111035530
  • https://blog.csdn.net/weixin_45775801/article/details/106299693

使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了相关推荐

  1. java手机象棋软件下载,Java手机网络版象棋游戏附源码JAVA游戏源码下载

    运行于手机上的中国象棋游戏,鉴于JAVA J2ME技术,本游戏分服务端和客户端,导入JAR包即可在手机上运行,内有开发文档和运用说明. Java手机网络版象棋游戏附源码 (1 folders, 2 f ...

  2. 天天酷跑php源码_使用Java实现天天酷跑(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  3. 百看不如一练,55个Java练手项目(附源码+视频教程),全都在这里了

    我们都知道,不管学习那门语言最终都要做出实际的东西来,而对于编程而言,这个实际的东西当然就是项目啦,不用我多说大家都知道学编程语言做项目的重要性. 于是,我熬了几个通宵,终于整理出了55个培训机构内部 ...

  4. Java项目—健身房管理系统(附源码+文档)

    今天给大家分享一个Java实战项目-健身房管理系统(附源码+数据库+文档) 需要资料源码的小伙伴可以点击下方链接和小编一起学习~ 需要源码直接私信小编哟~https://www.bilibili.co ...

  5. 手把手搭建Java金融借贷系统【附源码】(毕设)

    一.项目简介 本课程演示的是一套基于基于JavaWeb实现的金融借贷系统 或 P2P金融管理系统 或 小额贷款系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍 ...

  6. 视频教程-手把手搭建Java金融借贷系统【附源码】(毕设)-Java

    手把手搭建Java金融借贷系统[附源码](毕设) 南京大学软件工程硕士,全栈开发工程师,全栈讲师. 曾就职于中软国际.擎天科技.华为等公司,擅长Java开发.Web前端.Python爬虫.PHP等领域 ...

  7. Java项目——物业管理系统(附源码+数据库)

    今天给小伙伴们分享一个Java项目--物业管理系统(附源码+数据库) 感兴趣的小伙伴可以点击下方链接和小编一起学习哟~ https://www.bilibili.com/video/BV1cD4y1s ...

  8. JAVA计算机毕业设计摄影网站(附源码、数据库)

    JAVA计算机毕业设计摄影网站(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  9. 【附源码】小程序初窥之简单查单词

    新年假期百无聊赖,于是就看了一下微信小程序的开发方法,花了两天时间入了个门,这里记录一下. 阅读之前,先确定你知道基本的 html+css+js 语法,这样就能更好地和我一样,以一个新手的视角来理解小 ...

最新文章

  1. Java日志的心路历程
  2. eui加载时间长_游戏加载时间越来越短了?背后藏着这些小心机
  3. icache的方面以及使用
  4. Spark SQL 简介
  5. 架构设计的立方体扩展
  6. PHP notice/warning 对性能的影响
  7. 数据结构-队列和栈的那些事(三)
  8. java进出口食品安全信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  9. js 实现2的n次方计算函数_x的10的n次方解决js浮点数计算
  10. 觅风易语言[11-20]
  11. java resourcebundle_java.util.ResourceBundle使用详解
  12. 明明是旅游小程序却做起了内容电商?
  13. Ambari Server重启报错的解决办法
  14. BI神器Power Query(16)-- PQ制作时间维度表(5)
  15. 力扣(202.454)补9.18
  16. turlebot3 ROS相关求助
  17. 今天分享一个用Python来爬取小说的小脚本!(附源码)
  18. c#自定义事件以及与其他事件绑定
  19. eps文件_如何编辑eps文件?
  20. Java字符串拆分详解

热门文章

  1. MAT(Memory Analyzer Tool)工具使用超详细版
  2. 【Unity】安卓adb 手机WiFi 调试安装应用
  3. 使用PIL进行图片处理
  4. @高校学生开发者,为什么你一定要“上手”开源项目?
  5. 串口屏的键盘时如何实现的
  6. python实现局域网攻击软件_使用python的scapy库进行局域网内的断网攻击(基于ARP协议)...
  7. 量化分析师的Python日记【第1天:谁来给我讲讲Python?】
  8. 数字,字符,字符串转换
  9. 撮合系统的数据流转过程
  10. 引用android-support-v7-appcompat库文件出错的问题