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简单程序读取串口信息的方法
Mar 13 Python
python实用代码片段收集贴
Jun 03 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
详解Python3注释知识点
Feb 19 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
Django框架models使用group by详解
Mar 11 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
Python实现区域填充的示例代码
Feb 03 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
JQUERY获取form表单值的代码
2010/07/17 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
你真的了解Python的random模块吗?
2017/12/12 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
什么是测试驱动开发(TDD)
2012/02/15 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
银行实习人员自我鉴定
2013/09/22 职场文书
开办化妆品公司创业计划书
2013/12/26 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
打架检讨书
2015/01/27 职场文书
职称评定个人总结
2015/03/05 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL