前言
前面二章简单过了一下python的基本知识,最近刚好需要实现QQ自动发送消息的脚本,于是便拿python来练手。
业务逻辑
1、打开需要发送消息的窗口
2、锁定该窗口
3、将需要发送的内容放到QQ窗口
4、模拟按键发送enter键发送消息(QQ发送消息有二种方式Enter/Ctrl+Enter,本次案例使用Enter)
环境
win10 + python3.7.1
从业务上看,程序需要对window的窗口进行操作,应此需要安装pywin32来访问win32API
pywin32下载地址
锁定QQ窗口
锁定窗口使用win32gui库中的FindWindow函数
定义:
HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName)
参数:
IpClassName:指向类名
IpWindowName:指向窗口名
返回值:
有指定的类名和窗口的名字则表示成功返回一个窗口的句柄。否则返回零。
由于不清楚QQ窗口所使用的类名,应此我们只需在IpWindowName填上聊天对象的名字就好
例如
handle = win32gui.FindWindow(None, "XXX聊天群")
填充消息
填充消息使用win32gui库中的SendMessage函数
定义:
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)
参数:
hWnd :窗口句柄
Msg:指定被发送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
例如:
#将剪切板中内容填充到窗口中
win32gui.SendMessage(handle, 770, 0, 0)
发送消息
填充消息使用win32gui库中的SendMessage函数
#向窗口发送回车消息
win32gui.SendMessage(handle, win32cin.WM_KEYDOWN, win32con.VK_RETURN, 0)
测试代码
import win32gui
import win32con
import win32clipboard as w
#发送的消息
msg = "测试代码"
#窗口名字
name = "不知"
#将测试消息复制到剪切板中
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
w.CloseClipboard()
#获取窗口句柄
handle = win32gui.FindWindow(None, name)
#while 1==1:
if 1 == 1:
#填充消息
win32gui.SendMessage(handle, 770, 0, 0)
#回车发送消息
win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
转载自原文链接, 如需删除请联系管理员。
原文链接:python入门(三) 实现QQ自动发送消息,转载请注明来源!