业务逻辑
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
import time
#发送的消息
msg = "测试代码"
#窗口名字
name = "python学习群 1002942851 "
#将测试消息复制到剪切板中
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
w.CloseClipboard()
#获取窗口句柄
handle = win32gui.FindWindow(None, name)
while True:
#填充消息
win32gui.SendMessage(handle, 770, 0, 0)
#回车发送消息
win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
time.sleep(30)
————————————————
版权声明:本文为CSDN博主「stone15165」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/stone15165/article/details/106410529