打字的小强 发表于 2018-11-2 00:20

按键精灵多线程运用,检测卡死线程,短信api调用,通知功能

本帖最后由 打字的小强 于 2018-11-2 08:54 编辑

按键精灵是一个耗费系统资源的脚本语言,需要适配分辨率和root,有时候游戏升级卡了也不知道,我就想做一个检测卡死的功能。采用多线程,按键精灵的多线程也很有大的局限性,频繁开启关闭线程很容易闪退,不能开太多的线程,而且需要设置线程之间的共享变量才能控制线程的启动与停止,最近在写云手机脚本,云手机的运营商为了节约宽带资源,不会一直让你监控云手机的运行状态,这时候就要弄一个发送通知的东西,在我帖子历史中有个发邮件通知的方法,在第三个帖子,有兴趣的可以去看看,我觉得不够醒目哈。还是花点钱用短信通知了。SUBMAIL双十一做活动,35块钱买了一千条短信。做给别人就要别人花钱啦,自己玩玩可以玩好长时间,哈哈{:1_926:}


Dim intX,intY,jk,gj
Call main()
Sub main//主线程
      dim control = ReadUIConfig("多选框3")
      gj = Thread.Start(挂机)//开启挂机线程
      If control =True Then //判断是否开启了监控线程
                Thread.SetShareVar "a", false //设置共享变量
                jk = Thread.Start(监控)//开启监控线程
                Do
                        If Thread.GetShareVar("a") = True Then
                              ShowMessage "界面已经卡住了"
                              Thread.stop (gj)//暂停挂机线程
                              KillApp "填写自己要杀死的的app"//杀死某个app,然后在挂机线程启动的时候启动
                              ShowMessage "等待5秒钟脚本重新开始"
                              Delay 5000
                              gj = Thread.start(挂机)//重启挂机线程
                              Thread.SetShareVar "a",False
                        End If
                Loop      
      End If
End Sub


Sub 监控//监控线程
Dim num = ReadUIConfig("输入框6")
Dim j_time =ReadUIConfig("输入框5")
dim sms =ReadUIConfig("多选框1")
Dim blo_time = 0
Dim cmp,tar_color
ShowMessage "监控线程启动"
      Do
                tar_color = GetPixelColor(668, 632)//获取监控点颜色
                Delay 2000
                ShowMessage "监控点颜色为"&tar_color,5000
                Delay j_time*1000
                cmp = CmpColor(668, 632, tar_color, 0.9) //延迟一段时间后对比一个点在两个时间点的颜色进行对比
                If cmp > -1 Then
                        blo_time = blo_time +1 //卡住计次
                        ShowMessage "卡住" & blo_time & "次"
                        If blo_time >= num Then
                              ShowMessage "卡住三次,即将重启app"
                              Thread.SetShareVar "a", True //设置共享变量,传递给主线程
                              If sms = true Then         //判断是否有短信提醒
                                        Call 短信()
                              End If
                              Delay 3000
                              blo_time = 0
                        End If
                        Else
                        blo_time = 0
                        Thread.SetShareVar "a", False
                End If
      Loop
End Sub
Sub 挂机
      Do
                Delay 5000
                //....自己的主要功能代码
      Loop
End Sub
Sub 短信
Dim 返回内容,请求地址,post数据,短信内容,收件人,app_key,app_id,脚本特征码
脚本特征码 = ReadUIConfig("输入框2")//多开的话每个脚本设置都不一样
收件人 = ReadUIConfig("输入框1")
dim myself = ReadConfig("多选框2")
If myself = True Then
      app_key = ReadUIConfig("输入框3")
      app_id = ReadUIConfig("输入框4")
Else
      app_id ="申请自己的app_id"
      app_key ="申请自己的app_key"
End If
Log.Open//开启日志记录

短信内容="【考拉工作室】您的脚本出现问题,请查看,设备码:"&脚本特征码

请求地址 = "https://api.mysubmail.com/message/send.json"
post数据 = "appid=" & app_id & "&to=" & 收件人 & "&content=" & 短信内容 & "&signature=" & app_key
返回内容 = URL.Post(请求地址, post数据)
If 返回内容["status"] = "success" Then //拆解返回值json
      ShowMessage "短信发送成功,剩余的短信量为" & 返回内容["sms_credits"]
      TracePrint 返回内容
      Else
      ShowMessage "短信发送失败,失败原因已记录,打开日志查看原因"
      TracePrint 返回内容
      Log.Close//关闭日志记录
End If
End Sub



界面代码

界面1:
{
      标签页1:
      {
                        多选框:
                {
                        注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                        名称:"多选框3",
                        提示内容:"卡死重启app",
                        点击响应:"函数名1",
                        选中:false,
                        文字大小:0,
                        高度:0,
                        宽度:0
                },      
                水平布局:
                {
                        文字框:
                        {
                              注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"文字框6",
                              显示内容:"每",
                              文字大小:0,
                              高度:0,
                              宽度:0
                        },      
                        输入框:
                        {
                              注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"输入框5",
                              提示内容:"",
                              初始文本:"60",
                              仅输入数字:false,
                              文字大小:0,
                              最大输入长度:0,
                              高度:0,
                              宽度:0
                        },      
                        文字框:
                        {
                              注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"文字框7",
                              显示内容:"秒检测一次,检测",
                              文字大小:0,
                              高度:0,
                              宽度:0
                        },      
                        输入框:
                        {
                              注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"输入框6",
                              提示内容:"",
                              初始文本:"3",
                              仅输入数字:false,
                              文字大小:0,
                              最大输入长度:0,
                              高度:0,
                              宽度:0
                        },      
                        文字框:
                        {
                              注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"文字框8",
                              显示内容:"次,重启APP。",
                              文字大小:0,
                              高度:0,
                              宽度:0
                        },      
                        注释:"用于将多个控件放在同一行",
                        
                },      
               
      
                多选框:
                {
                        注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                        名称:"多选框1",
                        提示内容:"卡死短信通知",
                        点击响应:"函数名1",
                        选中:false,
                        文字大小:0,
                        高度:0,
                        宽度:0
                },      
      
                文字框:
                {
                        注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                        名称:"文字框5",
                        显示内容:"(每天免费20条,需要更多请自行创建短信api填写其他信息,详情请看脚本说明)",
                        文字大小:0,
                        高度:0,
                        宽度:0
                },      
               
                水平布局:
                {
                        文字框:
                        {
                              注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"文字框1",
                              显示内容:"收件人手机号:",
                              文字大小:0,
                              高度:0,
                              宽度:0
                        },      
                        输入框:
                        {
                              注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"输入框1",
                              提示内容:"请填写收件人手机号",
                              初始文本:"",
                              仅输入数字:false,
                              文字大小:0,
                              最大输入长度:0,
                              高度:0,
                              宽度:0
                        },      
                        
                        注释:"用于将多个控件放在同一行",
                        
                },      
                水平布局:
                {
                        文字框:
                        {
                              注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"文字框2",
                              显示内容:"脚本编号 :       ",
                              文字大小:0,
                              高度:0,
                              宽度:0
                        },      
                        输入框:
                        {
                              注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"输入框2",
                              提示内容:"填写自定义脚本编号",
                              初始文本:"",
                              仅输入数字:false,
                              文字大小:0,
                              最大输入长度:0,
                              高度:0,
                              宽度:0
                        },      
                        注释:"用于将多个控件放在同一行",
                        
                },      
                多选框:
                {
                        注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                        名称:"多选框2",
                        提示内容:"自建短信通知其他信息",
                        点击响应:"函数名1",
                        选中:false,
                        文字大小:0,
                        高度:0,
                        宽度:0
                },      
                水平布局:
                {
                        文字框:
                        {
                              注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"文字框3",
                              显示内容:"app_id:   ",
                              文字大小:0,
                              高度:0,
                              宽度:0
                        },      
                        输入框:
                        {
                              注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                              名称:"输入框3",
                              提示内容:"提示用户应该输入什么内容",
                              初始文本:"",
                              仅输入数字:false,
                              文字大小:0,
                              最大输入长度:0,
                              高度:0,
                              宽度:0
                        },      
                        注释:"用于将多个控件放在同一行",
                        
                },      
                水平布局:
                {
                        注释:"用于将多个控件放在同一行",
               
               
                文字框:
                {
                        注释:"文字大小、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                        名称:"文字框4",
                        显示内容:"app_key:",
                        文字大小:0,
                        高度:0,
                        宽度:0
                },      
                输入框:
                {
                        注释:"初始文本、文字大小、最大输入长度、高度、宽度是可选属性,如需使用默认值,可保持值为0或直接删除此属性",
                        名称:"输入框4",
                        提示内容:"提示用户应该输入什么内容",
                        初始文本:"",
                        仅输入数字:false,
                        文字大小:0,
                        最大输入长度:0,
                        高度:0,
                        宽度:0
                },      
      
      },      
      
      },      

}

abcdlkh 发表于 2018-11-17 18:35

老哥敢不敢搞一个趣头条自动阅读滴脚本啊万分感谢

steiff 发表于 2018-11-2 00:51

支持一下楼主!

chang1582 发表于 2018-11-2 01:19


支持一下楼主!

倪沁东 发表于 2018-11-2 02:10

加油!支持楼主

qq20048888 发表于 2018-11-2 05:22

不错不错。支持下!

hu007 发表于 2018-11-2 07:43

多谢分享了!

jiemo365 发表于 2018-11-2 08:12

我只会do loop

莫莫 发表于 2018-11-2 08:44

不错不错。支持下!

xbang 发表于 2018-11-2 08:46

支持分享啊,

hh3016 发表于 2018-11-2 08:54

注释不错。写得很小白
页: [1] 2 3 4
查看完整版本: 按键精灵多线程运用,检测卡死线程,短信api调用,通知功能