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中处理字符串之isalpha()方法的使用
May 18 Python
python实现redis三种cas事务操作
Dec 19 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
May 11 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
numpy返回array中元素的index方法
Jun 27 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
Python collections模块使用方法详解
Aug 28 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
解决echarts中饼图标签重叠的问题
May 16 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 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
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
vue3.0 上手体验
2020/09/21 Javascript
python逐行读写txt文件的实例讲解
2018/04/03 Python
浅析Python数据处理
2018/05/02 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
python 发送get请求接口详解
2020/11/17 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
安踏广告词改编版
2014/03/21 职场文书
我的老师教学反思
2014/05/01 职场文书
诚信考试标语
2014/06/24 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏