一,背景知识

要实现给微信好友定时发送消息,需要分为两部分:

1.实现控制屏幕按键

1,实现给微信好友发送消息的原理就是利用微信的快捷按键,Robot类就可以很好的控制按键。

Java中Robot类位于java.awt.Robot,该类用于为测试自动化,自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件,Robot类的主要目的是便于Java平台实现自动测试。

Robot可以模拟鼠标和键盘的输入,可以把他看作Java版的按键精灵。

2,要实现给微信好友发送消息,那就需要把消息复制到剪切板上,再粘贴到对话框,这里就需要用到Toolkit来将消息复制到剪贴板,使用Toolkit也可以获得本机系统的屏幕的参数。具体代码为:

//获取系统粘贴板
//Toolkit类:Abstract Window Toolkit的所有实际实现的抽象超类。 Toolkit类的子类用于将各种组件绑定到特定的本机Toolkit实现。
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// 将字符串复制到剪切板
Transferable tText = new StringSelection(msg);
clip.setContents(tText, null);

2.实现定时定点发送消息

定时定点发送消息可以借助Java中的Timer类来实现


import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class Test {public static void main(String[] args) {//timer1();timer2();//timer3();//timer4();}// 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)public static void timer1() {Timer timer = new Timer();timer.schedule(new TimerTask() {public void run() {System.out.println("-------设定要指定任务--------");}}, 2000);// 设定指定的时间time,此处为2000毫秒}// 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行// schedule(TimerTask task, long delay, long period)public static void timer2() {Timer timer = new Timer();timer.schedule(new TimerTask() {public void run() {System.out.println("-------设定要指定任务--------");}}, 1000, 1000);}// 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。// scheduleAtFixedRate(TimerTask task, long delay, long period)public static void timer3() {Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {public void run() {System.out.println("-------设定要指定任务--------");}}, 1000, 2000);}// 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.// Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)public static void timer4() {Calendar calendar = Calendar.getInstance();calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时calendar.set(Calendar.MINUTE, 0);       // 控制分calendar.set(Calendar.SECOND, 0);       // 控制秒Date time = calendar.getTime();         // 得出执行任务的时间,此处为今天的12:00:00Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {public void run() {System.out.println("-------设定要指定任务--------");}}, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行}
}

上述代码提供了四种方式来实习定时任务,本文采用的是第四种方式!

3.微信的相关快捷按键

扩展:

按键 功能
ALT+F4 关闭微信窗口
Ctrl+Alt+W 打开微信窗口
Ctrl+F 微信中搜索好友
Enter 发送消息

二,具体实现步骤

定时给微信好友发送消息:

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.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class Super_T5  {public static void main(String[] args) {timer4();}public static void timer4() {Calendar calendar = Calendar.getInstance();
/*        calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时文件传输助手calendar.set(Calendar.MINUTE, 0);       // 控制分calendar.set(Calendar.SECOND, 0);       // 控制秒*/Date time = calendar.getTime();         // 得出执行任务的时间,此处为今天的12:00:00Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {public void run() {System.out.println("-------提醒日常签到--------");String friendNickName = "日常签到";try {searchMyFriendAndSend(friendNickName);} catch (InterruptedException e) {e.printStackTrace();}}}, time, 1000*60);// 这里设定将延时每天固定执行}private static void searchMyFriendAndSend(String friendNickName) throws InterruptedException {// 创建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);// 发送消息sendMsg();//关闭微信对话窗口robot.delay(2000);robot.keyPress(KeyEvent.VK_ALT);robot.keyPress(KeyEvent.VK_F4);robot.keyRelease(KeyEvent.VK_ALT);}private static void sendMsg() throws InterruptedException {String[] mottoes = {"xdm,记得每天签到",};for (String motto : mottoes) {sendOneMsg(motto);}Thread.sleep(2000);sendOneMsg("学院要登记的哦!");}private static void sendOneMsg(String msg) {// 创建Robot对象Robot robot = getRobot();Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();// 将字符串复制到剪切板Transferable 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.keyPress(KeyEvent.VK_ENTER);robot.delay(1000);}private static Robot getRobot(){// 创建Robot对象Robot robot = null;try {robot = new Robot();} catch (AWTException e) {e.printStackTrace();}return robot;}
}

以上就是实现的完整代码,需要注意的地方在代码中都有注释!!!

三,应用场景

应用场景可以说是颇为广泛,比如说:

  • 给女盆友早安晚安!ps:前提是要有女朋友哦!

  • 每天需要重复完成的微信工作,签到、打卡等

  • 再比如说,微信疯狂骚扰朋友、网络互骂等!ps:这个可不提倡哈!

基于Java实现的定时给微信好友发送消息相关推荐

  1. 使用python 自动给微信好友发送消息 pyautogui库下载

    使用Python-pyautogui,实现全自动微信发消息,带交互功能 直接输入好友的备注.想发送的次数以及发送的内容,即可实现自动查找该好友并对该好友发送指定的消息 先直接上代码,后文会给出代码的具 ...

  2. c++实现定时向qq好友发送消息

    今天闲来无事突然想qq只能即时发送消息,能不能够使用其他的程序来控制qq发送指定的程序呢,后来参考了部分资料才发现,可以先通过获得qq的聊天窗口的句柄,然后通过模拟按键来实现qq消息的模拟发送.话不多 ...

  3. Java代码实现向企业微信用户发送消息

    公司内部交流使用的企业微信,最近项目中要实现向员工发送企业微信通知,于是看了下企业微信的api,简单实现了下: 1. 其实就是一个HTTP请求,如下 请求方式:POST(HTTPS) 请求地址: ht ...

  4. java实现如何定时给微信群中发送消息

    大家好,我是雄雄. 前言 前几天,发了一个系列这样的文章,如下所示: java实现每日给女友微信发送早安等微信信息 java实现给微信群中定时推送消息 如何将每日新闻添加到自己博客中,发送到微信群中 ...

  5. java实现不再单身,微信主动发送早安给女友

    网上案例 网上最多的可能就是利用微信服务号给推送信息,如图所示: 缺点如下: 需要点进去订阅号才能看到,没哟起到吸引的作用 申请的测试服务号,也不知道多久过期,说停就给你停掉了 定制化的需求有的达不到 ...

  6. python3通过itchat登录微信给好友发送消息

    环境:windows7,python3.7 安装itchat,requests 金山词霸开放平台API:http://open.iciba.com/dsapi 如果遇到登录微信时出现错误告警,请参照: ...

  7. python发微信提醒天气_基于Python实现定时自动给微信好友发送天气预报

    效果图 from wxpyimport * import requests from datetimeimport datetime import time from apscheduler.sche ...

  8. python发送文件给微信好友_基于Python实现定时自动给微信好友发送天气预报

    效果图 from wxpyimport * import requests from datetimeimport datetime import time from apscheduler.sche ...

  9. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya

    太长不看版本 本文通过一个实际的具有一定商业价值的项目,展示了 API 优先的开发方法.通过薅羊毛的方式,落地了 Free Arch 架构. 背景和价值 通过微信公众号积累粉丝并进行商业活动宣传,是新 ...

  10. 基于java springboot的小说阅读微信小程序含后台管理系统源码

    系统运行环境 开发工具 eclipse(idea),mysql5.7(大于5.5),navicat,小程序开发工具 硬件要求 windows操作系统 cpu:2.4GHz 内存:4G 硬盘:100G ...

最新文章

  1. .NET Core微服务之路:不断更新中的目录 (v0.42)
  2. apache mysql 添加到开机自动启动
  3. Python 图像处理篇-利用opencv库展示本地图片实例演示
  4. WPF 实现加速小火箭~
  5. Magicodes.IE 2.5.4.2发布
  6. JQuery 实践--让页面动起来
  7. HTML_DOM的node屬性
  8. pyinstaller利用配置文件打包
  9. Hadoop组件之-HDFS(HA实现细节)
  10. linux批量创建系统,linux系统批量创建用户
  11. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
  12. 有监督学习(supervised learning))与无监督学习(unsupervised learning)之间有何区别?
  13. 干货 | 携程用户数据采集与分析系统
  14. mysql frm myd myi 恢复_恢复 - 如何从.myd,.myi,.frm文件恢复MySQL数据库
  15. 华为android系统通知栏怎么关闭,华为通知栏怎么设置?三招帮你禁止华为通知栏消息...
  16. ios 高德获取定位_概述-iOS 定位SDK | 高德地图API
  17. 开源资产管理系统SNIPE-IT搭建
  18. I/O复用 —— select
  19. 『树形DP·换根法』Accumulation Degree
  20. MMX、SSE、AVX等SIMD指令集说明

热门文章

  1. Jeff Atwood:Google的头号UI问题
  2. (个人笔记系列) Java基础语法
  3. 译: 进化的系统需要进化的系统工程
  4. 从五个方面来讲一下平面设计颜色搭配知识——黎乙丙
  5. html导出excel换行,ASP.NET 导出到Excel时保留换行的代码
  6. Docker学习(二)进阶
  7. 全文检索——Lucene
  8. 叮咚叮咚,京东叮咚音箱Skill开发之路
  9. 超星问卷与麦客问卷自动填写(selenium+Chrome)
  10. 高数 | 函数在间断点处的极值问题