女朋友说上班都不回她微信,于是给她安排一个定时自动发微信的功能。
【效果预览】

实现过程

  • 一、启动微信进程
  • 二、获取微信窗口在桌面的坐标
  • 三、发送消息
    • 1.鼠标依次点击打开聊天框
    • 2.输入发送内容
  • 四、设置定时任务

一、启动微信进程

正常情况下微信是最小化的,我们需要先打开在桌面显示聊天窗口。
subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。
启动之后需要sleep一会儿,等窗口完全显示之后再去获取聊天窗口坐标,否则窗口还没完全显示获取到的坐标为None。

subprocess.Popen([r"F:\WeChat\WeChat.exe"]) #微信安装路径
time.sleep(0.1) #等窗口显示完毕

二、获取微信窗口在桌面的坐标

EnumWindows对屏幕上所有的顶层窗口依次进行枚举,将每个顶层窗口的窗口句柄依次传递给回调函数。
在回调函数callback判断是窗口、可用窗口、可见窗口,则存到字典hwnd_title中。
最后遍历所有的窗口hwnd_title,如果是微信聊天窗口则返回窗口坐标(x,y,x2,y2)

#回调函数,将所有句柄存入字典hwnd_title
def callback(self,hwnd,mouse):if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):self.hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})#获取窗口位置
def location(self):win32gui.EnumWindows(self.callback, None)for hwnd, title in self.hwnd_title.items():if title is not "" and '微信' in title:return win32gui.GetWindowRect(hwnd)

三、发送消息

获取到窗口坐标后,可以计算出点击【微信通讯录、第一个标星好友、发消息、发送】四个点的坐标。四点的坐标跟屏幕分辨率大小是有关系的,通常分辨率都是1920X1080

1.鼠标依次点击打开聊天框

def send(self,location):list = [(location[0]+30,  location[1]+150),#点击微信通讯录(location[0]+280, location[1]+285),#点击标星好友(location[0]+575, location[1]+405)]#点击发送消息#鼠标点击系列操作for v in list:self.mouse.position = vself.mouse.click(pynput.mouse.Button.left, 1)time.sleep(0.1)#等窗口完全打开

2.输入发送内容

定义列表存放要发送的信息,使用random.randrange()随机获取一条信息

self.mouse = pynput.mouse.Controller()#鼠标控制器
self.keyboard = pynput.keyboard.Controller()#键盘控制器content=['吃饭了吗','吃的什么','好不好吃','喝奶茶吗','下班了吗',]
self.keyboard.type(content[random.randrange(0,len(content))])#输入内容
self.mouse.position = (location[0]+820, location[1]+605)#发送按钮坐标
self.mouse.click(pynput.mouse.Button.left, 1)#点击发送(S)

四、设置定时任务

APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。基于这些功能,我们可以很方便的实现一个python定时任务系统。

if __name__ == '__main__':def job():subprocess.Popen([r"F:\WeChat\WeChat.exe"])time.sleep(0.1)  # 等窗口显示完毕main = WeChat()location = main.location()main.send(location)scheduler = BlockingScheduler()scheduler.add_job(job,'interval', minutes=60)#‘seconds’, ‘minutes’, ‘hours’scheduler.start()

gitee 完整代码链接

用python实现给女朋友自动发微信相关推荐

  1. Python倒计时自动发微信(电脑版微信)

    一.前言: Python倒计时自动发微信(电脑版微信登录状态) 二.主要思路及步骤: 1.先启动微信 2.定位到搜索框 3.搜索微信 4.进入聊天窗口 5.粘贴文本内容 6.发送   7.关闭微信窗口 ...

  2. python 编写一段自动下载微信群的聊天记录中的图片并保存到本地的代码

    以下是一段简单的 Python 代码,可以自动下载微信群聊天记录中的图片并保存到本地: import requestsdef download_image(url, file_name):respon ...

  3. python自动发送微信文件_python自动发微信监控报警

    我们每个人每天都是在用微信,在程序开发过程中,我们会需要监控我们的程序,发短信监控收费,发邮件懒得看,发微信是最好的方式,而且是免费的.发现个非常好用的python库:wxpy.wxpy基于itcha ...

  4. python自动发微信新闻_微信群总有人发广告?用Python写一个自动化机器人消灭他...

    作者 | 刘早起 出品 | 早起Python(ID: zaoqi-python) 或者是一声不吭的去骚扰每一个群成员. 虽然不清楚是什么能够驱使他们这样不折不扣的努力成为最强微信群牛皮癣(可能是钞能力 ...

  5. python自动发微信新闻网_python自动发微信监控报警

    我们每个人每天都是在用微信,在程序开发过程中,我们会需要监控我们的程序,发短信监控收费,发邮件懒得看,发微信是最好的方式,而且是免费的.发现个非常好用的python库:wxpy.wxpy基于itcha ...

  6. python自动发微信新闻网_用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...

  7. 利用python itchat给女朋友定时发信息

    利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考 ...

  8. python:从0开始自动发微博

    前言 由于学院的微博需要发早安,晚安,而我经常忘记发,所以索性写个自动发微博的程序,放到服务器上..... 一.微博 1.注册一个微博 略 2.注册一个应用 名称随便取一个就行,分类和平台选择我们最熟 ...

  9. 我也用Node写个每天给她自动发微信的脚本

    前言 每天都是为公司的应用写自动化测试脚本,没曾把这些自动化应用到生活中,直到逛社区看到 用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话 发现还有如此好玩的事情.于是赏玩了 ...

最新文章

  1. Python数据科学-技术详解与商业实践视频教程
  2. 【C++ STL】vector库使用方法
  3. maven-compiler-plugin
  4. JDK1.8 十大新特性详解
  5. 使用RAID增加传统机器硬盘的性能
  6. BZOJ 2242: [SDOI2011]计算器 [快速幂 BSGS]
  7. vue 调用webservice_js跨域调用WebService的简单实例
  8. [转] 81条经典话语~~~当裤子失去皮带,才懂得什麽叫做依赖
  9. jsp 中select 下拉选择框 el 三元运算符 如何选中与不选中
  10. OpenShift 4 - 通过DaemonSet在指定Node上运行守护程序
  11. UGUI 图片灰显裁剪
  12. 车辆销售系统用例_使用OpenCV和Python构建自己的车辆检测模型
  13. 执行对象cocos2d-x 2.x action动作整理集合
  14. 【数据挖掘算法】(一)MSET 算法
  15. 微信小程序canvas2D全新API介绍
  16. C++ 侯捷系列视频汇总
  17. Linux刻录固态硬盘教程,linux迁移至固态硬盘全过程
  18. 再见2018 你好2019
  19. PHP jQuery微信大转盘抽奖源代码分享
  20. 2020.7.8比赛总结

热门文章

  1. Spring Bean 的scope什么时候设置为prototype,什么时候设置为singleton
  2. 小数计算器-python
  3. 导图解文 从梦想到财富(32)说服,是个闯关游戏
  4. x86 上安装 Snow Leopard 及 搭建 Xcode 全程快播
  5. java 关注公众号_推荐10个值得关注的技术公众号
  6. Maven:工程的拆分与聚合
  7. 用 java 生成 TexturePacker 的工程文件
  8. 中移动Oracle,Oracle中国移动经典面试题(附代码跟两种答案)
  9. python定义函数self_python中定义函数时,self怎么理解:
  10. 光遇服务器什么时候维护好2.7,光遇:开服如何坚持到现在?老玩家坦言,这四件事难以割舍...