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魔术方法详解
Feb 14 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Python之变量类型和if判断方式
May 05 Python
python 如何快速复制序列
Sep 07 Python
python接口自动化框架实战
Dec 23 Python
python中pandas对多列进行分组统计的实现
Jun 18 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 DOS攻击实现代码(附如何防范)
2012/05/29 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python实现控制台输入密码的方法
2015/05/29 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
神经网络python源码分享
2017/12/15 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python matplotlib拟合直线的实现
2019/11/19 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
公司出纳岗位职责
2013/12/07 职场文书
项目副经理岗位职责
2013/12/30 职场文书
护士进修自我鉴定
2014/02/07 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
vue实现移动端div拖动效果
2022/03/03 Vue.js
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL