需求
微信加的群多了,在电脑上用微信的时候好卡,微信还时不时假死
怎么办?定期清空聊天记录,经常删除群消息
简单重复的事情交给机器去做,如何用Uibot自动的删除微信群消息呢?
原理简单(大致流程):
1、提前写出可以放心删除的群列表
2、通过文字匹配找到相应的群,并删除
3、循环操作
实现思路
文字匹配用ocr功能,循环操作用遍历数组的方式实现
文字匹配开始的时候我用“鼠标移到OCR文本上”命令,然后直接点右键-删除
遇到问题
后来发现存在一个问题,就是如何当前微信区域都没有找到要删除的群(因为群太多,还有私聊、订阅号、服务号==,要删除的群需要下翻才看到),一旦遇到这种情况,流程就终止了(遍历不下去)
怎么办呢?如何让流程聪明一点,如果不出错就执行后面的右键、删除
如果出错就直接遍历下一个就。
请教高手
因为不是程序猿出身,很多都不懂,于是就直接请教群里的高手
高手支招了,但是还是不会弄,于是就突击官网论坛,以及B站上的相应教程
可是“判断元素是否存在”和if...else条件分支还是不会搞
后来就更换思路
想着能不能加个判断,如果不报错就执行右击和删除,报错就直接遍历下一个
再次请教高手
因为“基础我们从来不懂”,于是又直接在交流群里询问
高手就简单打3个英文字母“try”
可咱不懂,咱也不敢多问,直接在Uibot里搜索该命令
出来“异常捕获”和“异常重试”
又是突击官网论坛,以及B站上的相应教程
不过看了还是迷糊,教程看多了还有点急躁
不管了,直接动手试
经过好几次的尝试,还真试对出来了
当然中间有不懂的还是直接截图请教群里的
因为“鼠标移到OCR文本上”实在不好操作,就尝试换成“查找OCR文本位置”
只要匹配成功,获得准确的坐标,后面就可以用模拟鼠标移动的方式实现右击、删除
经过多次尝试,最后终于成功了。
流程截图如下:
可视化的流程
流程全部代码如下:
Dim objPoint = ""
Dim arrayRet = ""
Dim sRet = ""
sRet = File.Read("C:\Users\Administrator\Desktop\22.txt","auto")
arrayRet = Split(sRet,"\n")
For Each value In arrayRet
Try
objPoint = LocalOCR.Find({"wnd":[{"cls":"WeChatMainWndForPC","title":"微信","app":"WeChat"}]}, {"x":112,"y":69,"width":143,"height":764},value, "instr", 1, 3000, {"bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":True})
Catch
Continue
Else
Mouse.Move(objPoint["x"], objPoint["y"], False,{"iDelayAfter":300,"iDelayBefore":200})
Mouse.Click("right", "click", [],{"iDelayAfter":300,"iDelayBefore":200})
#icon("@res:default.png")
LocalOCR.Click({"wnd":[{"app":"WeChat","cls":"CMenuWnd"}],"ctrl":[{"role":"ROLE_SYSTEM_LIST"}]},{"height":0,"width":0,"x":0,"y":0},"删除聊天","instr",1,"left","click",2000,{"bContinueOnError":True,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":True,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
End Try
Next
网友评论