有朋友提出来了,有没有办法取到 QQ 的消息,是不是需要用抓屏,OCR 的方法?

其实不用的,微软定义了一套接口 UI Automation 用来自动化测试界面,或者提供给无障碍软件调用,方便残疾人使用 windows 程序。既然它能自动化测试界面,也就是说能取到界面里的所有东西,要不然怎么测试呢。

但是,并不是所有软件都支持UIA。国外的大公司的软件,或者使用标准界面的程序都是支持的。出于方便残疾人使用软件的角度上考虑,支持这套接口在有些国家是法律强制、或者建议的。但是国内没有相关规定,国内的软件几乎都不支持,可是腾讯的 QQ 竟然支持!

腾讯的软件做还是非常好的,最少在国内来说它还是非常规范的。先放个避雷针,没准哪天腾讯找来删这篇文章了。

感谢 yin kaisheng 的 uiautomation,把 UIA 封装的这么好用。

首先安装必须的库

pip install uiautomation

然后 打开 QQ 的消息窗口,这里只是演示,要是用程序打开消息窗口就比较麻烦,这里就不介绍了。

#导入必须的库

import uiautomation as auto

#找到消息窗口。消息窗口的 ClassName='TXGuiFoundation',但是 QQ 主窗口的的类名也是这个。所以需要再增加一个参数作为区分 Name='哈哈' ,这是消息窗口的名字,和对方的 QQ 昵称一样。

qq_win = auto.WindowControl(searchDepth=1, ClassName='TXGuiFoundation', Name='哈哈')

#先试着找到输入消息的编辑框,看看能不能取到里面的文字。如果 QQ 窗口是合并的,可能会有多个编辑框,这时需要设置函数 EditControl 的 foundIndex 来取其它编辑框。

input_edit = qq_win.EditControl()

print(input_edit.Name)

print(input_edit.GetValuePattern().Value) #打印编辑框内的文字

#历史消息在 QQ 里是一个 list,list 会有很多 Children。Children 的 Name 就是历史消息的文字部分了。

msg_list = qq_win.ListControl() #找到 list

items = msg_list.GetChildren()

for one_item in items: #遍历所有的 Children

print(one_item.Name) #打印消息

现在可以看到效果了吧。

这个例子只是简化的示例,大家快试试吧。没准哪天这篇文章就被删了。点个关注!收藏!谢谢!!

python读取qq客户端消息_使用 Python 读取 QQ 消息相关推荐

  1. 微信公众号怎么推送消息_微信公众号发送消息

    A.模板消息发送 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 备注 ...

  2. python自动回复qq消息_基于python使用qqbot接入qq做一个简单的文字消息自动回复

    qqbot是一个免费开源的基于smartqq的python插件,如果默认安装有pip,则可以直接在命令行下执行:pip install qqbot安装qqbot,安装成功后可以在命令行输入qqbot ...

  3. 用python做毕业设计小程序_用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  4. python自动推送消息_使用Python制作自动推送微信消息提醒的备忘录功能

    日常工作生活中,事情一多,就会忘记一些该做未做的事情.即使有时候把事情记录在了小本本上或者手机.电脑端备忘录上,也总会有查看不及时,导致错过的尴尬.如果有一款小工具,可以及时提醒,而不用再主动去查备忘 ...

  5. python自动发outlook邮件_使用python自动发邮件(163、QQ、outlook邮箱)

    import smtplib fromemail.mime.text import MIMEText fromemail.utils import formataddr fromdatetime im ...

  6. python自动推送消息_用Python设计一个可以自动推送微信消息提醒的备忘录

    请关注微信公众号:金融数学 FinancialMathematics日常工作生活中,事情一多,就会忘记一些该做未做的事情.即使有时候把事情记录在了小本本上或者手机.电脑端备忘录上,也总会有查看不及时, ...

  7. python实现简单对话机器人_采用python实现简单QQ单用户机器人的方法

    采用python实现简单QQ单用户机器人的方法如下: 一.首先我们查看一下关于3GQQ的相关协议: 对此,打开一个支持WAP的浏览器,可以使用Firefox的wmlbrowser插件,打开FF后,访问 ...

  8. 钉钉机器人自动回复消息_用Python自动发送钉钉数据消息

    ♚ 作者:王向君,一个不会运营的数据分析师不是好产品经理 博客:zhihu.com/people/chen-guan-xi-11-65 现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上 ...

  9. python二进制文件 删除尾部数据_在Python中读取和切片二进制数据文件的最快方法...

    我有一个处理脚本,用于提取"uint16"类型的二进制数据文件,并一次以6400块的形式进行各种处理.该代码最初是用Matlab编写的,但由于分析代码是用 Python编写的,我们 ...

  10. python读取hadoop库数据_使用Python访问HDFS

    最近接触到大数据,对于Skpark和Hadoop的料及都停留在第一次听到这个名词时去搜一把看看大概介绍免得跟不上时代的层次. 在实际读了点别人的代码,又自己写了一些之后,虽然谈不上理解加深,至少对于大 ...

最新文章

  1. matlab矢量相乘并打印显示
  2. 微信开发(一):用JSAPI做微信支付+微信卡包(代金券)
  3. 在Docker启动Cloudera并开始体验
  4. Eclipse调试Logcat类的说明
  5. go语言操作xlsx文件
  6. Ibatis XML 配置文件注释引起错误及解决方案
  7. 文件类常用方法 c# 1614531951
  8. 彻底禁用chrome请停用以开发者模式运行的扩展程序弹框
  9. autodock tool文件_理解autodock分子对接思路和流程--系列导读
  10. 数据库选项--自动更新统计
  11. CSS浮动为什么不会遮盖同级元素
  12. SVM支持向量分类器原理及OpenCV实现
  13. pythonpid传递函数_python实现PID算法及测试的例子
  14. 立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作
  15. Pytorch(gpu),cuda,cudnn安装
  16. 【树莓派】【树莓派4】四、个人NAS实现方式推荐
  17. 微信小程序手势图案锁屏、解锁实现并提供onSuccess等回调
  18. 贝壳找房值百亿美元吗?
  19. 想知道如何批量旋转图片?只要学会这两招就可以
  20. ER/Studio入门操作和配置生成SQL注释(Attribute name)

热门文章

  1. php千图网解析,PHP素材资源解析平台源码V8.0(thinkPHP框架内核)
  2. ENVI辐射校正(辐射定标+大气校正)
  3. DirectX 入门知识
  4. 《普林斯顿微积分读本》笔记-第2章三角学回顾
  5. Oracle 同音字查询,汉字的演变过程100字,汉字的演变图片
  6. Linux 如何安装*.bin的文件 ,例如刚刚下载了一个(AdbeRdr9.4.2-1_i486linux_enu.bin)的文件
  7. 8汉化 netreflector_Reflector下载_.NET Reflector官方中文版下载-华军软件园
  8. Python 编程的最好搭档—VSCode 详细指南
  9. 西电计科院微机原理与系统设计课程笔记(车向泉版)
  10. oracle11g 官网下载链接