【Python】pywin32實用小記|pywin32操作QQ聊天窗口爆破PS學姐

開局一張圖:被這些PS學姐搞煩了,一直想着那天要是他們再來就。。。今天這個想法成真了。
在這裏插入圖片描述
效果圖:代碼在最下面,當然啦這樣做其實是不好的,我也就是圖一樂,但是哪怕是真的不在乎也要小心被封號。對於這種嘛真的有心情還是不要爆破,搞個自動回覆,當一個禮貌的復讀機就行了。
在這裏插入圖片描述

while True:
    #打開剪貼板
    w.OpenClipboard()
    #清空剪貼板
    w.EmptyClipboard()
    #設置剪貼板內容
    w.SetClipboardData(win32con.CF_UNICODETEXT, "aaa")
    #獲取剪貼板內容
    date = w.GetClipboardData()
    #關閉剪貼板
    w.CloseClipboard()
    print(date)

w.SetClipboardData(win32con.CF_UNICODETEXT, “aaa”)每次都相當於執行了Ctrl+C
當然Win10系統對重複的複製有一個處理機制,就是如下圖,第一條是“aaa”,你們無論多少次複製,隊列都不會增長。
在這裏插入圖片描述

# 打開剪貼板
w.OpenClipboard()
# 清空剪貼板
w.EmptyClipboard()
# # 設置剪貼板內容
w.SetClipboardData(win32con.CF_UNICODETEXT, "bbb")
while True:
    # 獲取剪貼板內容
    data = w.GetClipboardData()
    print(data)
    time.sleep(1.5)  # 延緩進程

運行後不管什麼時候你用Ctrl+C複製了一下,雖然系統的剪貼板已經改變(如下圖),但是程序中的得到的剪貼板的內容任然是之前設置的,似乎這兩個剪貼板不完全關聯在一起。
在這裏插入圖片描述

import win32clipboard as w
# 關閉剪貼板
    w.CloseClipboard()
    關閉以後就不能操作例如:
    print(w.GetClipboardData())  #(1418, 'GetClipboardData', '線程沒有打開的剪貼板。')
    但是任然可以這樣
# 把剪切板內容粘貼到qq窗口
    win32gui.SendMessage(QMagHandle, win32con.WM_PASTE, 0, 0)
    

在這裏插入圖片描述
這個紅色的可以不用管,可能是內部實現方式比較特殊,所以PyCahrm認爲不存在這個模塊,但是是可以正常使用的,我就不知道一直去查爲什麼

爆破代碼

pip install pywin32 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
import win32gui
import win32con
import win32clipboard as w
import time

def 爆破PS學姐(QMagHandle):
    # 把剪切板內容粘貼到qq窗口
    win32gui.SendMessage(QMagHandle, win32con.WM_PASTE, 0, 0)
    # 按下後鬆開回車鍵,發送消息
    win32gui.SendMessage(QMagHandle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    win32gui.SendMessage(QMagHandle, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

def InitMsg(msg):
    # 打開剪貼板
    w.OpenClipboard()
    # 清空剪貼板
    w.EmptyClipboard()
    # 設置剪貼板內容
    w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
    # 關閉剪貼板
    w.CloseClipboard()

#返回值爲對應QQ消息窗口的handle,參數爲QQ消息窗口的名字
def 初始化QQ窗口(QWinName):
    # 獲取qq窗口句柄,騰訊聊天窗口類名'TXGuiFoundation',不過沒有重名的可以不寫
    QMagHandle = win32gui.FindWindow(None, name)
    if QMagHandle == 0:
        raise Exception('未找到窗口!')
    else:
        # 顯示窗口
        win32gui.ShowWindow(QMagHandle, win32con.SW_SHOW)
        return QMagHandle

if __name__ == '__main__':
    name = ''  # QQ聊天窗口的名字
    msg = ""
    f = 1  #發消息的頻率,默認1 sec

    InitMsg(msg)
    try:
        QMagHandle = 初始化QQ窗口(name)
        while True:
            爆破PS學姐(QMagHandle)
            time.sleep(f)  # 延緩進程
    except Exception as e:
        print(e)

附贈一些找到的有用的資料:
如果你想不用剪貼板直接通過win32gui.SendMessage()發送消息,參考:windows下用python3通過win32api往記事本里寫入字符串windows下用python3通過win32api往記事本里寫入字符串

Python筆記之通過PyWin32模塊實現在QQ聊天窗口自動發送消息
Win32消息處理API—PostMessage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章