python入门(三) 实现QQ自动发送消息

编程知识 更新时间:2023-05-03 03:47:26

前言

前面二章简单过了一下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自动发送消息

本文发布于:2023-04-30 11:10:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/497645c58946d0c940941ab8be53f03f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:发送消息   入门   python   QQ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 114198文章数
  • 28923阅读数
  • 0评论数