提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
编写这款微信自动发消息.exe程序主要是因为和朋友在微信互相刷屏扔[炸弹]表情,自己手动发太累了,但哥们又不服输,嘿嘿,刚好在学习python,就想着自己写一个简单的脚本文件,直接自动轰炸到他叫爸爸!
文末有下载地址!
一、PyAutoGUI简介
PyAutoGUI 是一个 Python 库,用于实现自动化 GUI 操作的功能。它可以通过模拟鼠标移动、点击、键盘输入等操作来实现对计算机屏幕上 GUI 元素的控制。我们就是通过PyAutoGUI 来模拟鼠标移动点击进行游戏中化肥购买的一个流程。
二、使用步骤
1.下载PyAutoGUI
在终端输入:
pip install pyautogui
执行上述命令后,pip 将自动下载并安装 PyAutoGUI 库及其依赖项。等待安装过程完成。
安装完成可以在终端输入:
import pyautogui
如果没有出现错误信息,说明 PyAutoGUI 已经成功安装。
2.引入库
在编写的py文件中输入:
import pyautogui
将pyautogui引入到类中使用
3.关键代码
选择文本,读取文本内容
def open_file():
global content_var
global file_name_var
file_path = filedialog.askopenfilename(filetypes=[('Text Files', '*.txt')])
if file_path:
with open(file_path, 'rb') as file:
sz = os.path.getsize(file_path)
if not sz:
messagebox.showerror("错误", "打开文本为空,请重新选择")
return
else:
raw_data = file.read()
result = chardet.detect(raw_data)
encoding = result['encoding']
content = raw_data.decode(encoding)
print(content)
content_var = content
file_name = os.path.basename(file_path)
print(file_name)
file_name_var.set(file_name)
切割文本内容,逐条发送
def get_msg(contents):
# 想发的消息,每条消息空格或换行符分开
return re.split(r'\s+|\\n', contents)
模拟按键,进行复制粘贴
def send(msg):
# 复制需要发送的内容到粘贴板
pyperclip.copy(msg)
# 模拟键盘 ctrl + v 粘贴内容
pyautogui.hotkey('ctrl', 'v')
# 发送消息
pyautogui.press('enter')
设置参数进行循环发送
def send_msg(friend, bomb, interval, sendmsg):
global pause_flag
global thread_running_flag
# 检查是否输入昵称
if friend_name_var.get() is None or friend_name_var.get() == "":
messagebox.showerror("错误", "请先输入朋友昵称")
return
# 检查朋友昵称长度限制
if len(friend_name_var.get()) > 32:
messagebox.showerror("错误", "朋友昵称长度超过限制")
return
# 检查发送次数类型和最大限制
try:
if bomb_sum_var.get() <= 0 or bomb_sum_var.get() > 10000: # 最大限制为10000
messagebox.showerror("错误", "发送次数应为1-10000之间的整数")
return
except ValueError:
messagebox.showerror("错误", "发送次数应为整数")
return
# 检查是否选择文本
if content_var is None or content_var == "":
messagebox.showerror("错误", "请先选择文本文件")
return
print(thread_running_flag)
if thread_running_flag: # 线程开始执行任务,更改标识
thread_running_flag = False
set_button(start_btn, end_btn)
print(thread_running_flag)
while not thread_running_flag: # 判断标志是否为False
# Ctrl + alt + w 打开微信
pyautogui.hotkey('ctrl', 'alt', 'w')
# 搜索好友
pyautogui.hotkey('ctrl', 'f')
# 复制好友昵称到粘贴板
pyperclip.copy(friend)
# 模拟键盘 ctrl + v 粘贴
pyautogui.hotkey('ctrl', 'v')
time.sleep(1)
# 回车进入好友消息界面
pyautogui.press('enter')
time.sleep(1) # 等待搜索
num = 1
while num <= bomb:
for msg in get_msg(sendmsg):
if pause_flag: # 为True时进入
while pause_flag: # 为True时进入循环,False时跳出循环
time.sleep(0.1)
send(msg)
time.sleep(interval)
num += 1
thread_running_flag = True # False变True
pause_flag = False
set_button(start_btn, end_btn)
keyboard.unhook_all() # 移除之前所有的监听
微信打开窗口默认是ctrl+alt+w,QQ默认是ctrl+alt+x 如果想用QQ发可以自己加个按键进行切换,或者直接把QQ的快捷打开也设置为ctrl+alt+w就同样适配QQ的发送啦~
点击启动按钮后执行
def start():
global friend_name_var
global content_var
global bomb_sum_var
global interval_time_var
global pause_flag
global thread_send
keyboard.unhook_all() # 移除之前所有的监听
if __name__ == '__main__':
# 好友昵称
friend_name = friend_name_var.get()
# 信息次数
bomb_sum = bomb_sum_var.get()
# 间隔时间
interval_time = interval_time_var.get()
# 发送信息(用空格分隔开需要发送的每条信息)
send_str = content_var
keyboard.on_release(on_release) # on_press 按下监听 on_release 释放监听
thread_send = threading.Thread(target=send_msg, args=(friend_name, bomb_sum, interval_time, send_str))
thread_send.setDaemon(True) # 守护线程(主线程结束子线程也结束)
thread_send.start()
监听是我设置了个暂停发送的按键, F1 。如果用完不移除的话,会导致有多个监听达不到预期的暂停效果。
4.界面展示

因为是空闲时间做的小软件,界面就没费什么心思,使用的基本是原生的pythonGUI,有时间的小伙伴可以自己优化下
总结
这个也有参考吧里帖子,但是这是上上星期写的,我没找到当时参考的帖子记录,抱歉抱歉~
总的来说,这就是一款没什么大用但又有点作用的小程序,比较适合我这种无聊的人,嘿嘿~
链接:https://pan.baidu.com/s/1mg7gFlbaNy0t_8YFw81qmQ?pwd=QQQA
提取码:QQQA
如果觉得有意思的话,记得点个赞哦
本文介绍了如何使用Python库PyAutoGUI编写一个小程序,实现微信自动发送消息,通过模拟鼠标和键盘操作,简化了手动发送的过程。详细步骤包括安装库、关键代码实现、界面展示以及使用方法。
462





