当前位置: 首页 > 科技观察

使用Python读取QQ消息_0

时间:2023-03-12 22:02:07 科技观察

使用Python读取QQ消息上一篇文章《使用 Python 自动发送 QQ 消息》发表后,很多小伙伴都非常感兴趣。还有朋友问,有没有办法获取QQ消息,需要用到截屏,OCR的方法吗?其实大可不必。微软定义了一套接口UIAutomation来自动化测试接口,或者提供无障碍的软件调用,方便残障人士使用Windows程序。既然它能自动测试接口,也就是说它能把接口里面的东西都拿来,不然怎么测试。但是,并非所有软件都支持UIA。国外大公司的软件,或者标准接口的程序都支持。从让残障人士更容易使用软件的角度来看,支持这套接口在一些国家是法律强制或推荐的。但是国内没有相关规定,国内几乎没有软件支持,但是腾讯的QQ居然支持!腾讯的软件还是很不错的,至少在国内还是很规范的。先放个避雷针,说不定哪天腾讯会来删这篇文章。感谢尹凯生的uiautomation,把UIA封装的这么好。首先安装必要的库pipinstalluiautomation,然后打开QQ消息窗口。这只是一个演示。用程序打开消息窗口比较麻烦,这里就不介绍了。#导入必要的库importuiautomationasauto#找到消息窗口。消息窗口的ClassName='TXGuiFoundation',但是QQ主窗口的类名也是这个。所以需要再加一个参数作为区分Name='haha',就是消息窗口的名字,和对方的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中是一个列表,列表中会有很多Children。孩子的名字是历史消息的文本部分。msg_list=qq_win.ListControl()#查找listitems=msg_list.GetChildren()forone_iteminitems:#遍历所有Childrenprint(one_item.Name)#打印消息现在可以看到效果了。这个例子只是一个简化的例子,我们来试试看。也许有一天这篇文章会被删除。点击关注!最喜欢的!谢谢你!!