下面的代码可以实现QQ自动发消息,分为文本和图片两种:
import win32gui
import win32con
import win32clipboard as clipboard
import time
from PIL import Image
from io import BytesIO
def Send(name, msg):
# 打开剪贴板
clipboard.OpenClipboard()
# 清空剪贴板
clipboard.EmptyClipboard()
# 设置剪贴板内容
clipboard.SetClipboardData(win32con.CF_UNICODETEXT, msg)
# 获取剪贴板内容
#date = clipboard.GetClipboardData()
# 关闭剪贴板
clipboard.CloseClipboard()
# 获取qq窗口句柄
handle = win32gui.FindWindow(None, name)
if handle == 0:
print('未找到窗口!')
# 显示窗口
#win32gui.ShowWindow(handle, win32con.SW_SHOW)
# 把剪切板内容粘贴到qq窗口
win32gui.SendMessage(handle, win32con.WM_PASTE, 0, 0)
# 按下后松开回车键,发送消息
win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.SendMessage(handle, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
time.sleep(1)
def Send_Image(name,path):
img = Image.open(path)
output = BytesIO()
img.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
# 打开剪贴板
clipboard.OpenClipboard()
# 清空剪贴板
clipboard.EmptyClipboard()
clipboard.SetClipboardData(win32con.CF_DIB, data) #将图片放入剪贴板
# 获取qq窗口句柄
handle = win32gui.FindWindow(None, name)
if handle == 0:
print("未找到窗口")
#关闭剪切板
clipboard.CloseClipboard()
# 把剪切板内容粘贴到qq窗口
win32gui.SendMessage(handle, win32con.WM_PASTE, 0, 0)
# 按下后松开回车键,发送消息
win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.SendMessage(handle, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
time.sleep(1)
if __name__ == "__main__":
name = "如来"
for i in range(10):
Send(name,"bear冲冲冲,你最帅")
path = "bear.jpg"
Send_Image(name,path)