下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
AutoJS实现的移动端自动化方案,需root权限5。
注意事项:
需提前获取QQ开放平台API权限6
发送频率建议控制在1条/秒以下4
商业使用需遵守腾讯用户协议6
Java版需要添加httpclient依赖
import sys
import time
import threading
import pyautogui
import keyboard
from tkinter import *
from tkinter import ttk
from pynput import keyboard as kb
class QQMassSender:
def init(self):
self.root = Tk()
self.root.title("QQ群发助手 v2.5")
self.setup_ui()
self.running = False
self.listener = None
def setup_ui(self):
# 消息内容区域
Label(self.root, text="消息内容:").grid(row=0, column=0, sticky=W)
self.msg_text = Text(self.root, width=60, height=10)
self.msg_text.grid(row=1, column=0, columnspan=3, padx=5, pady=5)
# 发送设置区域
settings_frame = LabelFrame(self.root, text="发送设置")
settings_frame.grid(row=2, column=0, columnspan=3, sticky=EW, padx=5, pady=5)
Label(settings_frame, text="发送间隔(秒):").grid(row=0, column=0)
self.interval = Entry(settings_frame, width=8)
self.interval.insert(0, "1.5")
self.interval.grid(row=0, column=1)
Label(settings_frame, text="发送次数:").grid(row=0, column=2)
self.times = Entry(settings_frame, width=8)
self.times.insert(0, "10")
self.times.grid(row=0, column=3)
# 控制按钮区域
self.start_btn = Button(self.root, text="开始发送(F6)", command=self.start_sending)
self.start_btn.grid(row=3, column=0, pady=10)
self.stop_btn = Button(self.root, text="停止发送(F7)", command=self.stop_sending, state=DISABLED)
self.stop_btn.grid(row=3, column=1, pady=10)
# 状态显示
self.status = StringVar()
self.status.set("就绪")
Label(self.root, textvariable=self.status).grid(row=4, column=0, columnspan=3)
def start_sending(self):
if self.running:
return
self.running = True
self.start_btn.config(state=DISABLED)
self.stop_btn.config(state=NORMAL)
self.status.set("运行中...")
msg = self.msg_text.get("1.0", END).strip()
interval = float(self.interval.get())
times = int(self.times.get())
def sending_thread():
try:
for i in range(times):
if not self.running:
break
pyautogui.write(msg)
pyautogui.press("enter")
time.sleep(interval)
self.status.set(f"已发送 {i+1}/{times} 次")
except Exception as e:
self.status.set(f"错误: {str(e)}")
finally:
self.stop_sending()
threading.Thread(target=sending_thread, daemon=True).start()
def stop_sending(self):
self.running = False
self.start_btn.config(state=NORMAL)
self.stop_btn.config(state=DISABLED)
self.status.set("已停止")
def run(self):
# 设置快捷键监听
def on_press(key):
try:
if key == kb.Key.f6:
self.start_sending()
elif key == kb.Key.f7:
self.stop_sending()
except:
pass
self.listener = kb.Listener(on_press=on_press)
self.listener.start()
self.root.mainloop()
if name == "main":
app = QQMassSender()
app.run()
、、、 pyautogui
import time
def get_qq_positions():
print("请在5秒内打开QQ聊天窗口并点击输入框...")
time.sleep(5)
input_pos = pyautogui.position()
print(f"输入框坐标: {input_pos}")
print("请在5秒内点击发送按钮...")
time.sleep(5)
send_pos = pyautogui.position()
print(f"发送按钮坐标: {send_pos}")
return input_pos, send_pos
if name == "main":
input_pos, send_pos = get_qq_positions()
print("\n将以下坐标填入主程序:")
print(f"输入框坐标: {input_pos}")
print(f"发送按钮坐标: {send_pos}")