0x01 思路
思路是这样的
从message.txt里获取消息内容,从people.txt里获取发送对象的列表
通过win32gui库的函数来获得窗口句柄,使窗口最大化,以便确定搜索框的位置,然后模拟键鼠操作打开与目标的会话,通过剪贴板粘贴消息内容,模拟键鼠操作再发送出去
0x02 获取消息内容
# 从message.txt里获取消息内容
def message_get():
with open('./message.txt', encoding='UTF-8') as f1:
message = f1.readlines()
for msg in message:
return msg
# 从people.txt里获取发送对象列表
def people_get():
with open('./people.txt', encoding='UTF-8') as f2:
people = f2.readlines()
return people
0x03 剪贴板操作
其实用模拟键鼠操作慢慢复制也可以,但效率非常低,看了几篇文章感觉还是放进剪贴板后发消息模拟键盘Ctrl+V效率高一点
def copy(text):
# 打开剪贴板
clip.OpenClipboard()
# 清空剪贴板
clip.EmptyClipboard()
# 设置剪贴板内容
clip.SetClipboardData(win32con.CF_UNICODETEXT, text)
# 关闭剪贴板
clip.CloseClipboard()
0x04 发送消息
这里是通过窗口标题获取窗口句柄,然后激活打开窗口以及让窗口最大化
窗口最大化后好友的搜索框位置是固定的,消息内容框也大致在那个区域
def TIM_send(title, p, num):
try:
# 通过窗口标题获取窗口句柄
handle = win32gui.FindWindow(None, title.strip('\n'))
# print("窗口句柄是:{}".format(handle))
# 激活打开窗口
win32gui.SetForegroundWindow(handle)
# 窗口最大化
win32gui.ShowWindow(handle, win32con.SW_MAXIMIZE)
except Exception as e:
print("窗口句柄获取失败:{}".format(e))
接下来是打开与好友的会话
鼠标移到搜索框->点击一下->Ctrl+V->enter->成功打开与好友的会话
记得中间需要time.sleep(),秒数看心情(事实上看网速,等整个窗口打开在进行操作,不然消息发到别的地方容易社死)
def TIM_send(title, p, num):