python自動發(fā)送qq消息

以前看到網(wǎng)上一些小程序,在處理完事物后會自動發(fā)送qq消息,但是一直搞不懂是說明原理。也在網(wǎng)上找過一些python登陸qq發(fā)送消息的文字,但是都太復(fù)雜了。今天偶然看到一篇文章,是用python調(diào)用win32的接口發(fā)送qq消息的,覺得不錯,就先記錄下來,日后肯定會用得上這些小工具。
發(fā)送qq消息要求已經(jīng)登陸qq,而且qq的窗口是獨立的,現(xiàn)在新版的qq一般都是將所有的聊天窗口聚合在一起,因此要設(shè)置將qq窗口分離,或者將需要發(fā)送消息的那個窗口單獨分離出來。

上代碼吧

# 原理是先將需要發(fā)送的文本放到剪貼板中,然后將剪貼板內(nèi)容發(fā)送到qq窗口
# 之后模擬按鍵發(fā)送enter鍵發(fā)送消息

import win32gui
import win32con
import win32clipboard as w

def getText():
    """獲取剪貼板文本"""
    w.OpenClipboard()
    d = w.GetClipboardData(win32con.CF_UNICODETEXT)
    w.CloseClipboard()
    return d

def setText(aString):
    """設(shè)置剪貼板文本"""
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
    w.CloseClipboard()

def send_qq(to_who, msg):
    """發(fā)送qq消息
    to_who:qq消息接收人
    msg:需要發(fā)送的消息
    """
    # 將消息寫到剪貼板
    setText(msg)
    # 獲取qq窗口句柄
    qq = win32gui.FindWindow(None, to_who)
    # 投遞剪貼板消息到QQ窗體
    win32gui.SendMessage(qq, 258, 22, 2080193)
    win32gui.SendMessage(qq, 770, 0, 0)
    # 模擬按下回車鍵
    win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    win32gui.SendMessage(qq, win32con.WM_KEYUP, win32con.VK_RETURN, 0)


# 測試
to_who='xxx'
msg='這是測試消息'
send_qq(to_who, msg)

特別說明:to_who中填寫的是聊天窗口的名字,而非QQ號碼。(也就是是網(wǎng)名或備注名,具體的也可以在任務(wù)管理器中查看)

模擬按鍵
python可以通過win32和windows做各種交互,網(wǎng)上還有一篇文章是批量操作文件的例子,其原理和按鍵精靈差不多。只是好多參數(shù)不懂。就好比上面的發(fā)送qq消息的例子,本來想改改其中的方法,跳過剪貼板這一步,可是怎么改都不行,以后再試試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容