在講解代碼之前我們先來回憶一下,平時我們發送消息時,先打開微信或QQ的界面,在信息欄中輸入你要發送的內容在點擊發送或通過快捷鍵發送。如果要發送表情時,先打開微信或QQ的界面,在點擊表情包中你要發送的表情在點擊發送或通過快捷鍵發送
而這個簡易版微信或QQ轟炸就是通過pyautogui模塊來模擬鍵盤和鼠標來發送消息,tkinter模塊來將其包裝成一個應用界面
pyautogui模塊
https://www.cnblogs.com/MrYang161/p/11519282.html
tkinter模塊
https://www.cnblogs.com/MrYang161/p/11528037.html
代碼解析
下面的代碼是以發送表情為例
#先通過這個找到需要點擊的位置
import pyautogui as gui
screenWidth, screenHeight = gui.size()#以雙整數元組的形式返回屏幕的(寬度,高度)以像素為單位
currentMouseX, currentMouseY = gui.position()
# '''
# 以雙整數元組的形式返回鼠標指針的當前xy坐標。Args: x (int, None, optional)
# ——如果沒有,這個參數將覆蓋返回值中的x。y (int, None, optional)
# ——如果不是None,這個參數將覆蓋返回值中的y。返回:(x, y)鼠標當前xy坐標的元組。注意:position() functon不檢查故障保險。
# '''
print(screenWidth, screenHeight )
print(currentMouseX, currentMouseY )
#在將位置改完之后在運行以下代碼
import tkinter
from tkinter import messagebox
from tkinter import ttk
import pyautogui as gui
import time
def run():
time.sleep(2)
gui.hotkey('Alt', 'Tab')
gui.click(951, 685)#點擊表情包的位置(要更改)
time.sleep(0.6)
gui.click(967, 330)#點擊要發送的表情的位置(要更改)
gui.click(953, 695)#點擊信息欄的位置(要更改)
time.sleep(0.2)
gui.hotkey('ctrl', 'c')
time.sleep(0.2)
gui.hotkey('ctrl', 'enter')
for i in range(4):
gui.hotkey('ctrl', 'v')
time.sleep(0.2)
gui.hotkey('ctrl', 'enter')
def take():
time.sleep(2)
gui.hotkey('Alt', 'Tab')
gui.click(951, 685)#點擊表情包的位置(要更改)
time.sleep(0.6)
gui.click(967, 330)#點擊要發送的表情的位置(要更改)
gui.click(953, 695)#點擊信息欄的位置(要更改)
time.sleep(0.2)
gui.hotkey('ctrl', 'c')
time.sleep(0.2)
gui.hotkey('ctrl', 'enter')
for i in range(4):
gui.hotkey('ctrl', 'v')
time.sleep(0.2)
gui.hotkey('ctrl', 'enter')
def reu(s):
print(s)
if s=='qq':
run()#運行QQ轟炸
elif s=='wei':
take()#運行微信轟炸
rook=tkinter.Tk()
rook.title('微信轟炸')#界面名稱
rook.geometry('450x300')#界面大小
#<VirtualEvent event x=0 y=0>
comvalue = tkinter.StringVar() # 窗體自帶的文本,新建一個值
comboxlist = ttk.Combobox(rook, width=12,textvariable=comvalue)# 初始化
comboxlist["values"] = ('qq','wei')#下拉框中的值
comboxlist.current(0) # 選擇第一個
comboxlist.bind("<<ComboboxSelected>>", reu) # 綁定事件,(下拉列表框被選中時,綁定go()函數)
#綁定事件,(下拉列表框被選中時,綁定func()函數)
comboxlist.pack()
tkinter.Label(rook,text='請輸入:',font=("黑體",10, "bold"),bg='Yellow').pack()
# 綁定變量
e = tkinter.Variable()
entry2 = tkinter.Entry(rook, textvariable=e)#輸入內容
entry2.pack()
# e就代表輸入框這個對象
# 設置值
b1=tkinter.Button(rook,text='運行',font=("黑體",11, "bold"),command=lambda : reu(entry2.get())).pack()
#輸入的內容entry2.get())
rook.mainloop()