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模块顶层运行的代码引起的一个Bug
Jul 04 Python
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
Python运用于数据分析的简单教程
Mar 27 Python
设计模式中的原型模式在Python程序中的应用示例
Mar 02 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
使用python对excle和json互相转换的示例
Oct 23 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
Python通过2种方法输出带颜色字体
Mar 02 Python
解决python运行启动报错问题
Jun 01 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
实例分析javascript中的异步
2020/06/02 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
python设置值及NaN值处理方法
2018/07/03 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
微博营销计划书
2014/01/10 职场文书
英语生日邀请函
2014/01/23 职场文书
公司会议策划方案
2014/05/17 职场文书
2014年校长工作总结
2014/12/11 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
大学入学感言
2015/08/01 职场文书
python tkinter模块的简单使用
2021/04/07 Python
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript