以下是本人一时兴起琢磨的一个基于uiautomation库和pyautogui库的抢志愿脚本, 不过由于本人懒散成性没有完成项目打包, 只有一个py文件, 需要大家自行配置环境.
# coding:utf-8
import uiautomation as auto
import pyautogui
import pyperclip
mainWindow = auto.PaneControl(Name="QQ", ClassName="Chrome_WidgetWin_1")
# mainWindow.MoveCursorToMyCenter()
# list_text = mainWindow.TextControl()
# text = list_text.
# print(type(list_text))
win_mes = mainWindow.WindowControl(Name="消息列表")
juge = True
site = 0
m = 0
last_text =""
first_mes = win_mes.TextControl().Name
# print(type(first_mes))
while juge:
site = 0
new_mes = win_mes.TextControl().Name
# print("已捕获")
print(new_mes)
if new_mes != first_mes:
for i in new_mes:
# print(i)
site += 1
if i == "+" or i == "➕" or i == "+":
m += 1
if m == 2:
break
if m == 2:
juge = False
# print(site)
# print(len(new_mes))
for j in range(site,len(new_mes)):
last_text += new_mes[j]
print(last_text + "1")
# print(last_text)
pyperclip.copy("2077xxx"+last_text)
# pyperclip.paste()
pyautogui.hotkey('ctrl','v')
pyautogui.press('enter')
# 插曲
"""
mes_src = []
for c, d in auto.WalkControl(win_mes):
if c.ControlType not in [auto.ControlType.TextControl]:
continue
print(type(c.Name), type(d))
mes_src.append(c.Name)
print(mes_src)
print(type(auto.WalkControl(mes_q)))
"""
# 以上为使用uiautomation中的WalkControl方法来遍历传入的控件下的所有控件, 传回c, d值分别为控件和遍历深度, 需要注意的是传回时使用generator类型, 一次程序中只能遍历一次, 无法获取实时改变
该脚本主要通过循环实时抓取windows窗口的控件并获取聊天相关控件的文本内容, 然后切割文本内容获取志愿口令.
最后与预设好的姓名班级字符串拼接, 用键盘控制指令在群聊中发出.
在使用时, 运行脚本后有大约4-5s的时间将志愿群聊的qq窗口切出并把鼠标指针放在聊天输入框中, 当脚本识别到含有口令的文本时会自动执行.
问题: 该脚本对聊天文本的筛选指标是文本中是否包含两个加号, 然后直接截取第二个加号后的内容作为志愿指令, 青协的文本在某些特殊情况下会在文本最后加一些非指令内容, 此时该脚本无法准确识别, 不过可以满足90%的口令志愿
注意: 仅适用9.0以上的电脑端QQ