我用Qt+Python实现了个监控QQ消息自动下载文件处理的办公外挂程序
1,背景
公司生产的设备需要进行软件授权后,方可使用。
在合伙人里我负责软件这块,设计了一套授权机制,并管理授权工具。
操作过程很简单:申请人在监控软件上选择设备来申请授权,然后会生成一个申请文件,发给我之后,我用授权工具加载该文件,然后生成一个新的授权文件发给对方,对方在监控软件加载后设备即可正常使用了。
2,问题
刚开始一直都是我接受QQ发来的申请文件,手动操作,没觉得什么。后来,随着设备出货量越来越大,而且生产、售后等不同来源的申请人越来越多,授权这个小操作也变得越来越频繁,对我产生了不小的干扰。
然后我开始简化此操作,把所有需要申请授权的人拉到同一个QQ群,然后优化授权工具,监控QQ接收文件的目录,如果发现收到了新的申请文件(有特殊后缀)后,直接自动生成授权文件到桌面。这样我就只用在QQ上点击一下下载文件,几秒后在桌面就会出现对应的授权文件,我直接拖拽到QQ里发送即可。
再后来,有时候我不在公司或不在电脑旁时,或有时候交期太紧,生产部节假日加班生产设备,或我没看到消息,都会耽误及时授权。
于是我进一步,考虑开发一个不需要我操作,也能自动授权的工具。
3,解决方案
现在已经实现下载文件后,就自动生成文件了,只需要把两个地方自动化即可了:
一个监控QQ消息来自动下载
一个把生成的文件自动发送
这两个用python来处理。
监控QQ消息,最开始直观想到的方案是,图像识别,定时截图QQ聊天框,OCR识别文字来判断是否是需要授权的文件。后来用python的OCR库尝试了下,识别的准确率不太行。做不成精确逻辑。
后来一想,我只需要分辨当前是否有需要下载的文件即可。于是灵机一动,想到之前用过的python的图像相似度匹配功能。QQ的文件消息是一个特殊样式的矩形框:
我把它的部分区域,截取出来成为一个本地图片。然后定期在QQ聊天框收到文件消息的对应区域,匹配这个图片,匹配到就说明此时收到了一个文件类型的消息。直接调用鼠标移过去点击下载即可。
下载后就由之前的Qt授权工具(监控QQ收文件目录那个),自动授权然后生成授权文件到特定目录。
然后就是模拟自动发送功能了,我再监控这个生成目录,发现新的授权文件后,以资源管理器定位到该文件,选择该文件复制,再模拟点击激活QQ聊天框窗口后,调快捷键粘贴、发送。
4,实现效果
5,源码
资源已上传