使用python發送qq消息

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

# 原理是先將需要發送的文本放到剪貼板中,然後將剪貼板內容發送到qq窗口
# 之後模擬按鍵發送enter鍵發送消息

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):
    """設置剪貼板文本"""
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT, aString)
    w.CloseClipboard()

def send_qq(to_who, msg):
    """發送qq消息
    to_who:qq消息接收人
    msg:需要發送的消息
    """
    # 將消息寫到剪貼板
    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)

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

參考:

http://blog.csdn.net/dahuae/article/details/43969175
http://blog.csdn.net/seele52/article/details/17504925
http://lixxu.iteye.com/blog/417218
http://www.codeweblog.com/%E7%94%A8pywin32%E5%AE%9E%E7%8E%B0windows%E6%A8%A1%E6%8B%9F%E9%BC%A0%E6%A0%87%E5%8F%8A%E9%94%AE%E7%9B%98%E5%8A%A8%E4%BD%9C/

發佈了61 篇原創文章 · 獲贊 163 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章