|
|

5精币
.版本 2
.支持库 spec
.子程序 多线程执行签到监控线程
.参数 i, 整数型
.局部变量 小漠, dmsoft
.局部变量 ret, 整数型
.局部变量 截图路径, 文本型
.局部变量 校验次数, 整数型
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 是否卡死, 整数型
.局部变量 连续卡死次数, 整数型
CoInitializeEx (0, 0)
大漠多线程 .小漠.创建 ()
小漠 = 大漠多线程 .小漠
.如果 (小漠.Ver () = “”)
调试输出 (“小漠对象” + 到文本 (i) + “创建失败”)
.否则
调试输出 (小漠.Ver ())
调试输出 (“小漠对象” + 到文本 (i) + “创建成功”)
.如果结束
小漠.SetPath (取运行目录 () + “\pic\”)
小漠.SetDict (0, “D:\YYYBC\Pic\qiandao.txt”)
.判断循环首 (真)
列表框2.加入项目 (到文本 (大漠多线程 .窗口句柄), )
ret = 小漠.BindWindowEx (大漠多线程 .窗口句柄, “dx.graphic.opengl”, “windows3”, “windows”, “”, 0)
辅助延时 (500, )
.如果真 (ret = 1)
列表框2.加入项目 (“窗口” + 到文本 (i) + “副绑定成功”, )
跳出循环 ()
.如果真结束
调试输出 (“副绑定中”)
辅助延时 (1200, )
.判断循环尾 ()
.判断循环首 (真)
是否卡死 = 小漠.IsDisplayDead (10, 204, 458, 732, 3000) ' 查看这个坐标区域内画面是否变化是否卡死,如果卡死=1就需要进行重启
.如果 (是否卡死 = 1)
连续卡死次数 = 连续卡死次数 + 1
.如果真 (连续卡死次数 ≥ 200)
连续卡死次数 = 0
大漠多线程 .线程重启 = 真
.如果真结束
.否则
连续卡死次数 = 0
辅助延时 (10000, )
大漠多线程 .线程重启 = 真
.如果结束
.判断循环尾 ()
,上面是我的监控线程代码,我故意加入了否则辅助延时 (10000, )
大漠多线程 .线程重启 = 真这两行代码,为的是测试全局监控线程是否重启
全局监控线程代码如下:.版本 2
.支持库 EThread
.支持库 spec
.子程序 全局监控线程
.局部变量 a, 整数型
.局部变量 i, 整数型
.局部变量 实际序号, 整数型
a = 取数组成员数 (模拟器设备号列表)
.判断循环首 (真)
.计次循环首 (a, i)
.如果真 (大漠多线程 .线程重启 = 真)
进入许可区 (临界变量)
列表框2.加入项目 (“【自愈】模拟器” + 到文本 (i) + “异常 → 重启模拟器+线程”, )
退出许可区 (临界变量)
大漠多线程 .大漠.UnBindWindow ()
调试输出 (大漠多线程 .进程ID)
进程_结束 (大漠多线程 .进程ID)
大漠多线程 .大漠.释放 ()
线程_强制结束 (大漠多线程 .监控线程句柄)
线程_关闭句柄 (大漠多线程 .监控线程句柄)
线程_强制结束 (大漠多线程 .线程句柄)
线程_关闭句柄 (大漠多线程 .线程句柄)
大漠多线程 .线程句柄 = 0
辅助延时 (1000, )
实际序号 = 有效模拟器编号
重启单个雷电模拟器 (实际序号)
辅助延时 (20000, )
重新获取模拟器渲染句柄 (实际序号, i)
大漠多线程 .线程句柄 = 线程_启动 (&多线程执行签到, i, )
.如果 (大漠多线程 .线程句柄 > 0)
大漠多线程 .线程重启 = 假
调试输出 (“线程” + 到文本 (i) + “重启成功”)
.否则
调试输出 (“线程” + 到文本 (i) + “重启失败”)
.如果结束
.如果真结束
.计次循环尾 ()
辅助延时 (2000, )
.判断循环尾 ()
,为什么我单步调试到 进程_结束 (大漠多线程 .进程ID)这句代码就直接整个调试程序结束,而且我调试输出大漠多线程 .进程ID=0,但是这个大漠多线程 .进程ID在启动窗口获取的时候不是0呀?
|
|