【水蓝石】 在QQ群争抢“守夜冠军”时,使用pyqt4利用句柄自动定时在qq群发消息

2021-02-02   500 次阅读


前言

前言还是很好玩hhh就是晚上跟qq群一群年轻气壮的小伙子聊天,然后突然开始竞争“守夜冠军”,好多人表示自己可以通宵

但是我又不想通宵,想到可以用python写个机器人来代替我来定时在群里发消息证明自己存活

技术实现过程

一开始想用直接访问qq的域名之类的方法,使用现成的框架。先在github搜索到了pyqq,但是在二维码登录时又跟之前碰到了一样的情况,登录失败。

经过调查后发现,这个框架是访问网页版qq来进行各种操作的,但是网页版qq已经报废了,之前直接用客户端的框架又因为腾讯改了隐秘协议,所以不能使用。
腾讯qq看起来是一直在避免有人来写针对qq的机器人,但是你可以从网页端隔离咱,总不能禁止咱的自动输入

句柄掌控实现

所以这里使用python的句柄掌控,将想输入的词语放到剪切板,切到qq对话窗口并粘贴发送。将这个举动定时循环进行
最后也成功实现了,缺点是只能一直开着电脑,安装并登陆qq的客户端,还要一直打开着目标qq对话框的窗口,到时候还会弹出qq窗口影响电脑的正常使用。
但是暂时来当做“守夜”时的脚本还可以了,自测只要不锁屏不断网,屏幕黑了也能一直正常发送

下面贴出来代码

import win32gui
import win32con
import win32clipboard as w
import time
def sleeptime(hour,min,sec):
    return hour*3600 + min*60 + sec;
second = sleeptime(0,30,0)



#这是隔20秒执行一次

#发送的消息

msg = "劳资依旧是冠军"
#窗口名字
name = "西瓜市场风险投资"
#将测试消息复制到剪切板中

w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, msg)
w.CloseClipboard()
#获取窗口句柄
while 1==1:
    handle = win32gui.FindWindow(None, name)


    #填充消息
    win32gui.SendMessage(handle, 770, 0, 0)
    #回车发送消息
    win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    time.sleep(second)

关于这个win32,我觉得继续学习还是有很大的必要的

能做超多骚操作感觉

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

无论在未来前做什么,未来都会普通的到来