按键精灵实现qq群私发脚本Day1实战讲解

按键精灵qq群私发脚本实战Day1总结:

总体思路及设计方法:

1.首先在手机端主界面通过颜色命令里边的FindMultiColor(多点找色命令),对qq这款app的图标进行抓取(抓取代码非手动输入,而是通过抓抓操作,在所有点选取完毕后,直接生成代码,调试无误后,复制即可)。定位时,为了显示色差,总共分为了5个不同点的位置,分别是图标左上角的白色,企鹅头部的黑色,嘴部的黄色,围巾的红色,以及脚部的黄色,抓抓操作以及图片以及代码如下:
在这里插入图片描述
在这里插入图片描述

Sub openQQ()    //通过Sub 子程序命令 对该过程进行封装,方便直接调用,类似与java中的方法
Dim intX,intY    //(通过多点找色),准确抓取qq这款APP的图标位置 坐标必须用Dim先定义好,否则会出错
FindMultiColor 0,0,0,0,"FFFFFF","49|-1|FFFFFF,25|3|000000,28|21|08B0FA,18|40|1E1EE9,12|59|08B0FA",0,0.9,intX,intY
If intX > -1 And intY > -1 Then
	Delay 1000
	Tap intX, intY   //通过触摸命令里的Tap命令找到图标位置,并打开坐标位置
Else 
	EndScript   //如果没找到,则脚本停止运行
End If
End Sub

2.在成功进入qq界面后,为了保证页面的整洁,避免色差干扰。我们要保证当前消息界面为空,没有任何消息,再选择联系人进行群发操作。那我们就要删除所有对话框,保证界面此时为空,则用FindMultiColor(多点找色命令)对未读消息的红点进行小范围精准定位,用再流程控制阶段用if else 语句分为以下两步:

​ 2.1我们要判断当前消息界面是否有新消息未读,如果有,则

​ (1)我们需要点击该对话框进入聊天界面进行回复(回复语句自定义)

​ (2)回复完成后,滑动屏幕,退出到消息界面

​ (3)删除当前对话框

​ 2.2如果当前没有消息未读,则只删除聊天对话框,图片和代码如下:
在这里插入图片描述

//2.删除所有聊天对话框,首先要判断是否有新 消息未读(通过多点找色找红点点)
Sub deleteAndOpean() //通过控制命令里的Sub子程序 对该过程进行封装,方便直接调用
Dim intX,intY
FindMultiColor 648,328,706,378,"FFFFFF","16|-3|314CF7,32|3|FFFFFF,0|29|FFFFFF,16|31|314CF7,30|29|FFFFFF",0,0.9,intX,intY   //FindMultiColor 对新消息的提示红点进行小范围精准定位
If intX > -1 And intY > -1 Then  //用 if else语句进行判断
	Delay 1000
	Tap 246, 319  //如果有未读消息,则打开该对话框
	Delay 1000    //延迟1秒     1000的单位是ms 毫秒(上下同)
	Answer()     //调用answer子程序
Else 
	Touch 303, 321, 2000  //如果没有未读消息,则点击聊天框2秒钟,弹出删除按钮
	Delay 500
	Tap 397, 196        //点击删除按钮删除聊天框
End If
End Sub
    
Sub Answer()     //如果有未读消息,通过这个子程序进行回复
    Tap 114, 1159 //将光标定位到聊天输入窗口
    Delay 1000     //给1s延迟
    InputText "欢迎加入狂神说按键精灵交流群"
    Delay 1000
    Tap 621,1153 //定位到发送按钮,通过触摸命令里的Tap命令,点击发送 
	Delay 500       //延迟0.5s
   	Swipe 51,780,568,840,200 //通过触摸命令里的Swip滑动命令向左滑动回到qq主消息界面
   	Delay 1000 
    
   	deleteAndOpean() //再次调用deleteAndOpean子程序
    //注:此时再次调用deleteAndOpean()子程序,是因为该消息已经回复,还需要需要进行对话框的删除操作。
End Sub

3.我们可以通过颜色命令里的CmpColorEx(多点比色命令),先对当前消息界面的为空时的颜色进行抓取,选取十个点,又图可知,若界面为空,10个点的颜色相同,若此时当前消息界面仍有聊天框(必定在第一行),那么我们就再删除完第一行的对话框后,如果下面还有对话框,会自动弹上第一行,此时我们要判断整个消息界面是否还有对话框,如果有,则调用Sub deleteAndOpean()子程序再次进行删除(由于子程序的反复调用,实际上此步骤是循环操作,直到消息界面为空时才停止),如果没有,我们就可以选择底部的联系人,再选择对应的群,进行私发操作了。
在这里插入图片描述

//多点比色,比较当前页面是否有暂存聊天框,是否是空白
Sub openPerson()
If CmpColorEx("82|314|FAF6F5,78|336|FAF6F5,91|355|FAF6F5,65|385|FAF6F5,604|317|FAF6F5,665|331|FAF6F5,336|402|FAF6F5,314|306|FAF6F5,629|385|FAF6F5,193|370|FAF6F5",0.9) = 1 Then
	Delay 1000           //if判断,如果当前页面空白,没有对话框
	Tap 265, 1210   //点击打开联系人
	Delay 1000
	Tap 218, 466    //点击群聊
	Delay 1000
	Tap 269, 574    //选择需要发送的群
	Delay 1000
	Tap 661, 100    // 打开菜单栏
	Delay 1000
	Tap 625,489     //打开群成员列表	
Else
	deleteAndOpean()  //如果还有其他对话框,调用这个子程序删除
	Delay 1000
	openPerson()    //继续判断是否有对话框
End If
End Sub

通过以上的操作,可以准确的在手机主界面自动打开qq,进入qq后,自动检测当前消息界面是否为空,是否有暂存聊天框,以及未读消息。如果有,则自动回复所有未读消息,并清空所有聊天框,在消息界面清空后,点击联系人按钮,选择需要私发的群,打开菜单栏,打开群成员列表,进行群成员的选择


Day1实战整体源码如下:

//1.openQQ
Call openQQ()   //调用openQQ子程序
Delay 1000        //注意,注意,注意  调用下一个子程序之前,需要有一个延迟,否则程序会执行错误
Call deleteAndOpean()
Delay 1000
Call openPerson()
Delay 1000

Sub openQQ()
Dim intX,intY    //(通过多点找色),准确抓取qq这款APP的图标位置
FindMultiColor 0,0,0,0,"FFFFFF","49|-1|FFFFFF,25|3|000000,28|21|08B0FA,18|40|1E1EE9,12|59|08B0FA",0,0.9,intX,intY
If intX > -1 And intY > -1 Then
	Delay 1000
	Tap intX, intY   //找到图标位置,打开坐标位置
Else 
	EndScript   //如果没找到,则脚本停止运行
End If
End Sub
//定义一个过程,可以在脚本中调用这个过程


//2.删除所有聊天对话框,首先要判断是否有新 消息未读(通过多点找色找红点点1)
Sub deleteAndOpean()
Dim intX,intY
FindMultiColor 648,328,706,378,"FFFFFF","16|-3|314CF7,32|3|FFFFFF,0|29|FFFFFF,16|31|314CF7,30|29|FFFFFF",0,0.9,intX,intY
If intX > -1 And intY > -1 Then 
	Delay 1000
	Tap 246, 319  //如果有未读消息,则打开该对话框
	Delay 1000
Call Answer()     //通过Call方法调用answer子程序,Call可以省略
Else 
	Touch 303, 321, 2000  //如果没有未读消息,则点击聊天框2秒钟,弹出删除按钮
	Delay 500
	Tap 397, 196        //点击删除按钮删除聊天框
End If
End Sub

Sub Answer()
    Tap 114, 1159 //将光标定位到聊天输入窗口
    Delay 1000
    InputText "欢迎加入狂神说java交流群,群号78846958"
    Delay 1000
    Tap 621,1153 //点击发送
	Delay 500
   	Swipe 51,780,568,840,200 //向左滑动回到qq主消息界面
   	Delay 1000 
   	deleteAndOpean() //调用deleteAndOpean子程序
End Sub
//定义一个过程,可以在脚本中调用这个过程

//多点比色,比较当前页面是否有暂存聊天框,是否是空白
Sub openPerson()
If CmpColorEx("82|314|FAF6F5,78|336|FAF6F5,91|355|FAF6F5,65|385|FAF6F5,604|317|FAF6F5,665|331|FAF6F5,336|402|FAF6F5,314|306|FAF6F5,629|385|FAF6F5,193|370|FAF6F5",0.9) = 1 Then
	Delay 1000           //if判断,如果当前页面空白,没有对话框
	Tap 265, 1210   //点击打开联系人
	Delay 1000
	Tap 218, 466    //点击群聊
	Delay 1000
	Tap 269, 574    //选择需要发送的群
	Delay 1000
	Tap 661, 100    // 打开菜单栏
	Delay 1000
	Tap 625,489     //打开群成员列表	
Else
	deleteAndOpean()  //如果还有其他对话框,调用这个子程序删除
	Delay 1000
	openPerson()    //继续判断是否有对话框
End If
End Sub

问题总结:

  1. 每个大步骤执行前,以及执行完毕后,都需要加一个延迟,一般为1000ms(1s),否则会有热键冲突,导致两个命令之间没有缓冲,脚本无法识别,导致运行失败。同时,每个小命令,例如Tap,Swipe,Touch等,在执行之前也需要加一个缓冲,一般为500ms,或者1000ms

  2. 在执行Answer子程序时,每次执行Swipe命令,总是出错误,原因在于没有清空当前的聊天窗口,导致命令执行位置与窗口内已发送消息的所在位置冲突,因此每次执行前,都应该先清空聊天窗口内的消息。另外如果清空之后还是不能正常运行,则是因为Swipe选择的点可能有问题,可以重新选点,然后把移动所需时间调短一点,一般time<500ms即可

  3. 调用子程序的时候,可以不用加Call,例如调用openQQ子程序,可以用openQQ或者openQQ()两种方式进行调用。但是如果前面加上 Call,那么语法格式必须为 Call openQQ(),后面必须有(),否则会报错


Day2将会完整的带领有兴趣的小伙伴做完整个qq群私发脚本,未完代更…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值