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


Posted in Python onJuly 14, 2020

前言

最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微信,而这个库是通过微信网页版来操作微信的,现在微信网页版已经不能登录了所以失败,我又试了第二种方法,我试图找到微信界面上的搜索框控件,使用搜索框控件找到想法消息的人,然后发送消息,结果就是又失败了,为啥呢?经过我翻翻翻,找找找,发现微信的界面是使用duilib实现的,界面都是画上去的,控件只是逻辑上存在,而实际没有,我们根本获取不到,然后我只能通过手动移动鼠标的方式来实现了

1.打开微信,固定在左上角,这样便于我们固定微信上各个控件所在坐标

2.把鼠标移动到微信左边的“通讯录”按钮上,单击,打开通讯录

3.把鼠标移动到搜索框把你要找的人的微信名复制进去,回车,打开对话框(你要问我为什么要先打开通讯录再去搜索框搜?问就是不知道,其实是经过我的实验这样比较稳定,直接搜有bug,如果你能找到其他的解决办法请告诉我,谢谢啦)

4.把你要发送的话复制到对话框,回车或者alt+s 发送

这就结束了,下面是部分代码

import win32clipboard as w
import win32con
import win32api
import win32gui
import time
 
 
#把文字放入剪贴板
def setText(aString):
  w.OpenClipboard()
  w.EmptyClipboard()
  w.SetClipboardData(win32con.CF_UNICODETEXT,aString)
  w.CloseClipboard()
 
#模拟ctrl+V
def ctrlV():
  win32api.keybd_event(17,0,0,0) #ctrl
  win32api.keybd_event(86,0,0,0) #V
  win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)#释放按键
  win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
 
#模拟alt+s
def altS():
  win32api.keybd_event(18,0,0,0)
  win32api.keybd_event(83,0,0,0)
  win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0)
  win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)
# 模拟enter
def enter():
  win32api.keybd_event(13,0,0,0)
  win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)
#模拟单击
def click():
  win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
#移动鼠标的位置
def movePos(x,y):
  win32api.SetCursorPos((x,y))
 
if __name__=="__main__":
  
  #获取鼠标当前位置
  #hwnd=win32gui.FindWindow("MozillaWindowClass",None)
  hwnd = win32gui.FindWindow("WeChatMainWndForPC", None)
  win32gui.ShowWindow(hwnd,win32con.SW_SHOW)
  win32gui.MoveWindow(hwnd,0,0,1000,700,True)
  time.sleep(0.01)
  #1.移动鼠标到通讯录位置,单击打开通讯录
  movePos(28,147)
  click()
  #2.移动鼠标到搜索框,单击,输入要搜索的名字
  movePos(148,35)
  click()
  setText('胡歌')
  ctrlV()
  time.sleep(1) #别问我为什么要停1秒,问就是给微信一个反应的时间,他反应慢反应不过来,其他位置暂停的原因同样
  enter()
  time.sleep(1)
  #3.复制要发送的消息,发送
  setText('你好啊')
  ctrlV()
  altS()

全部代码我已经放在了我的github上,欢迎下载https://github.com/p910/python

到此这篇关于python操作微信自动发消息的实现(微信聊天机器人)的文章就介绍到这了,更多相关python操作微信自动发消息 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 代码性能优化技巧分享
Aug 07 Python
python发送HTTP请求的方法小结
Jul 08 Python
Python 正则表达式实现计算器功能
Apr 29 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
浅析Python数据处理
May 02 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
Python预测2020高考分数和录取情况
Jul 08 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 Python
python如何写try语句
Jul 14 #Python
Python操作MySQL数据库的示例代码
Jul 13 #Python
Python基于正则表达式实现计算器功能
Jul 13 #Python
python输出结果刷新及进度条的实现操作
Jul 13 #Python
python实现图像外边界跟踪操作
Jul 13 #Python
Python实现打包成库供别的模块调用
Jul 13 #Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 #Python
You might like
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
PHP添加MySQL数据记录代码
2008/06/07 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
跟老齐学Python之关于类的初步认识
2014/10/11 Python
Python fileinput模块使用实例
2015/05/28 Python
python多进程共享变量
2016/04/06 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
优秀安全员事迹材料
2014/05/11 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
2016公司年会主持词
2015/07/01 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL