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的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
Django Auth用户认证组件实现代码
Oct 13 Python
在Python中字典按值排序的实现方法
Nov 12 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
pycharm 实现调试窗口恢复
Feb 05 Python
python如何做代码性能分析
Apr 26 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 Python
Python+DeOldify实现老照片上色功能
Jun 21 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简单提示框alert封装函数
2010/08/08 PHP
php中使用url传递数组的方法
2015/02/11 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
JavaScript canvas绘制折线图
2020/02/18 Javascript
使用python Django做网页
2013/11/04 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
Python 硬币兑换问题
2019/07/29 Python
Python实现微信机器人的方法
2019/09/06 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python 画条形图(柱状图)实例
2020/04/24 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
电子商务专业实习生自我鉴定
2013/09/24 职场文书
门卫人员岗位职责
2013/12/24 职场文书
初中生评语大全
2014/04/24 职场文书
导师鉴定意见
2015/06/05 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python