系統城裝機大師 - 唯一官網:www.farandoo.com!

當前位置:首頁 > 腳本中心 > python > 詳細頁面

使用 Python 讀取 QQ 消息

時間:2020-09-29來源:www.farandoo.com作者:電腦系統城

使用 Python 讀取 QQ 消息

上一篇文章 《使用 Python 自動發送 QQ 消息》 發出以后,很多朋友非常感興趣。還有朋友提出來了,有沒有辦法取到 QQ 的消息,是不是需要用抓屏,OCR 的方法?

其實不用的,微軟定義了一套接口 UI Automation 用來自動化測試界面,或者提供給無障礙軟件調用,方便殘疾人使用 Windows 程序。既然它能自動化測試界面,也就是說能取到界面里的所有東西,要不然怎么測試呢。

但是,并不是所有軟件都支持UIA。國外的大公司的軟件,或者使用標準界面的程序都是支持的。出于方便殘疾人使用軟件的角度上考慮,支持這套接口在有些國家是法律強制、或者建議的。但是國內沒有相關規定,國內的軟件幾乎都不支持,可是騰訊的 QQ 竟然支持!

騰訊的軟件做還是非常好的,最少在國內來說它還是非常規范的。先放個避雷針,沒準哪天騰訊找來刪這篇文章了。

感謝 yin kaisheng 的 uiautomation,把 UIA 封裝的這么好用。

首先安裝必須的庫


 
  1. pip install uiautomation 

然后 打開 QQ 的消息窗口,這里只是演示,要是用程序打開消息窗口就比較麻煩,這里就不介紹了。

使用 Python 讀取 QQ 消息

#導入必須的庫


 
  1. import uiautomation as auto 

#找到消息窗口。消息窗口的 ClassName='TXGuiFoundation',但是 QQ 主窗口的的類名也是這個。所以需要再增加一個參數作為區分 Name='哈哈' ,這是消息窗口的名字,和對方的 QQ 昵稱一樣。


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

#先試著找到輸入消息的編輯框,看看能不能取到里面的文字。如果 QQ 窗口是合并的,可能會有多個編輯框,這時需要設置函數 EditControl 的 foundIndex 來取其它編輯框。


 
  1. input_edit = qq_win.EditControl() 
  2. print(input_edit.Name) 
  3. print(input_edit.GetValuePattern().Value)   #打印編輯框內的文字 

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


 
  1. msg_list = qq_win.ListControl() #找到 list 
  2. items = msg_list.GetChildren() 
  3. for one_item in items:      #遍歷所有的 Children 
  4.     print(one_item.Name)    #打印消息 

現在可以看到效果了吧。

使用 Python 讀取 QQ 消息

這個例子只是簡化的示例,大家快試試吧。沒準哪天這篇文章就被刪了。點個關注!收藏!謝謝!!

分享到:

相關信息

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載

jlzzjlzz亚洲乱熟在线播放