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 05 Python
python使用nntp读取新闻组内容的方法
May 08 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
python3操作微信itchat实现发送图片
Feb 24 Python
详解python数据结构和算法
Apr 18 Python
python区块及区块链的开发详解
Jul 03 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
python tkinter模块的简单使用
Apr 07 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python实现机器学习之元线性回归
2018/09/06 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
超简单的Python HTTP服务
2019/07/22 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
24个canvas基础知识小结
2014/12/17 HTML / CSS
linux下进程间通信的方式
2013/01/23 面试题
石油大学毕业生自荐信
2014/01/28 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书