[chenni]基于python pyautogui和uiautomation库的抢志愿脚本
-
以下是本人一时兴起琢磨的一个基于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