一、库的安装
通过pip工具安装pywin32库
pip install pywin32
二、代码
import win32gui
import win32con
import win32clipboard as w
import win32api
import time
import datetime
# 消息内容
msg = '要发送的消息'
# QQ窗口名字
name = '测试对象'
def send_msg():
# 获取窗口句柄
handle = win32gui.FindWindow(None, name)
# 将 QQ 窗口设置为活动窗口
win32gui.SetForegroundWindow(handle)
# 将测试消息放到剪贴板
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
w.CloseClipboard()
# 通过剪贴板填充消息
win32gui.SendMessage(handle, win32con.WM_PASTE, 0, 0)
# 模拟按下 Ctrl 键
win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)
time.sleep(0.1)
# 模拟按下 Enter 键
win32api.keybd_event(win32con.VK_RETURN, 0, 0, 0)
time.sleep(0.1)
# 模拟释放 Enter 键
win32api.keybd_event(win32con.VK_RETURN, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.1)
# 模拟释放 Ctrl 键
win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.1)
# 释放 QQ 窗口的焦点
win32gui.ReleaseCapture()
# 设置发送时间
send_time = datetime.datetime.now().replace(hour=17, minute=6, second=0, microsecond=0)
while True:
# 获取当前时间
now = datetime.datetime.now()
# 如果当前时间已经到达发送时间,就发送消息并退出循环
if now >= send_time:
send_msg()
break
# 如果当前时间还没到达发送时间,就等待一秒钟后再检查一次
time.sleep(1)
三、注意事项
1.注意把 '测试对象' 修改为你的聊天对象名称或者备注,要是显示的名称。如下,我们需要将测试对象修改为 '资料'
2.注意只能打开一个聊天窗口,把其他的聊天窗口都关了
四、测试效果
也可以实现炮轰功能,以下为代码:
import win32gui
import win32con
import win32clipboard as w
import win32api
import time
# 消息内容
msg = '要发送的消息'
# QQ窗口名字
name = '测试对象'
def send_msg():
# 获取窗口句柄
handle = win32gui.FindWindow(None, name)
# 将 QQ 窗口设置为活动窗口
win32gui.SetForegroundWindow(handle)
# 将测试消息放到剪贴板
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
w.CloseClipboard()
# 通过剪贴板填充消息
win32gui.SendMessage(handle, win32con.WM_PASTE, 0, 0)
# 模拟按下 Ctrl 键
win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)
time.sleep(0.1)
# 模拟按下 Enter 键
win32api.keybd_event(win32con.VK_RETURN, 0, 0, 0)
time.sleep(0.1)
# 模拟释放 Enter 键
win32api.keybd_event(win32con.VK_RETURN, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.1)
# 模拟释放 Ctrl 键
win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.1)
# 释放 QQ 窗口的焦点
win32gui.ReleaseCapture()
count = 0
while count < 50:
# 调用发送消息函数
send_msg()
time.sleep(0.1)
count += 1