开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 91|回复: 0
收起左侧

[精币悬赏] 监控线程绑定之后找字弹窗无效句柄窗口什么原因?

[复制链接]
结帖率:74% (42/57)
发表于 2026-4-9 20:27:07 | 显示全部楼层 |阅读模式   河北省石家庄市
5精币
.版本 2
.支持库 spec
.支持库 EThread
.支持库 iext
.支持库 shell


.程序集 窗口程序集_启动窗口
.程序集变量 账号文件名, 文本型, , "0"
.程序集变量 有效模拟器编号, 整数型, , "0"
.程序集变量 终止签到, 逻辑型


.子程序 __启动窗口_创建完毕
.局部变量 ret, 整数型


SetDllPathA (取运行目录 () + “\dm.dll”, 1)
全局大漠.创建 ()
调试输出 (全局大漠.Ver ())
ret = 全局大漠.Reg (“”, “”)
.如果真 (ret ≠ 1)
    信息框 (“注册VIP失败,无法使用大漠功能!”, 0, , )
    返回 ()
.如果真结束
调试输出 (“注册VIP成功”)
读取账号 ()
雷神_置安装目录 (编辑框_模拟器路径.内容, )
许可证 = 创建进入许可证 ()


.子程序 读取账号
.局部变量 i, 整数型
.局部变量 ini文件路径, 文本型
.局部变量 账号文本, 文本型
.局部变量 分割后账号数组, 文本型, , "0"
.局部变量 c, 文本型, , "0"
.局部变量 j, 整数型


账号文本 = 到文本 (读入文件 (取运行目录 () + “\config.ini”))
分割后账号数组 = 分割文本 (账号文本, #换行符, )
.计次循环首 (取数组成员数 (分割后账号数组), i)
    c = 分割文本 (分割后账号数组 , “|”, )
    超级列表框1.插入表项 (, , , , , )
    .计次循环首 (取数组成员数 (c), j)
        .如果 (j = 1)
            超级列表框1.置标题 (i - 1, 0, 到文本 (i))
            超级列表框1.置标题 (i - 1, j, c [j])
            加入成员 (账号文件名, c [1])
        .否则
            .如果 (j = 2)
                超级列表框1.置标题 (i - 1, 4, c [j])
            .否则
                .如果 (j = 3)
                    超级列表框1.置标题 (i - 1, 6, c [j])
                .否则


                .如果结束


            .如果结束


        .如果结束


    .计次循环尾 ()
.计次循环尾 ()









.子程序 __启动窗口_将被销毁
.局部变量 i, 整数型


' 销毁临界区
' 终止签到 = 真
删除进入许可证 (许可证)
.计次循环首 (取数组成员数 (大漠多线程), i)
    .如果真 (大漠多线程 .线程句柄 > 0)
        线程_强制结束 (大漠多线程 .线程句柄)
        线程_关闭句柄 (大漠多线程 .线程句柄)
    .如果真结束


.计次循环尾 ()
全局大漠.UnBindWindow ()


.子程序 _按钮_一键启动_被单击




全局主线程句柄 = 线程_启动 (&循环签到, , )
全局监控线程句柄 = 线程_启动 (&全局监控线程, , )




.子程序 全局监控线程
.局部变量 a, 整数型
.局部变量 i, 整数型
.局部变量 实际序号, 整数型


.判断循环首 (真)
    .计次循环首 (全局多开数量, i)
        .如果真 (大漠多线程 .线程重启 = 真)
            大漠多线程 .大漠.UnBindWindow ()
            ' 进程_结束 (大漠多线程 .进程ID)
            大漠多线程 .大漠.释放 ()
            线程_强制结束 (大漠多线程 .监控线程句柄)
            线程_关闭句柄 (大漠多线程 .监控线程句柄)
            线程_强制结束 (大漠多线程 .线程句柄)
            线程_关闭句柄 (大漠多线程 .线程句柄)
            大漠多线程 .线程句柄 = 0
            辅助延时 (取随机数 (800, 1200), )
            实际序号 = 大漠多线程 .模拟器序号
            重启单个雷电模拟器 (实际序号)
            辅助延时 (取随机数 (19000, 21000), )
            重新获取模拟器渲染句柄 (实际序号, i)
            大漠多线程 .线程句柄 = 线程_启动 (&窗口线程, i, )
            .如果 (大漠多线程 .线程句柄 > 0)
                大漠多线程 .线程重启 = 假
                调试输出 (“线程” + 到文本 (i) + “重启成功”)
            .否则
                调试输出 (“线程” + 到文本 (i) + “重启失败”)
            .如果结束


        .如果真结束


    .计次循环尾 ()
    辅助延时 (2200, )
.判断循环尾 ()


.子程序 窗口监控线程
.参数 i, 整数型
.局部变量 小漠, dmsoft
.局部变量 窗口句柄, 整数型
.局部变量 ret, 整数型
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 上次截图MD5, 文本型
.局部变量 当前截图MD5, 文本型
.局部变量 不动开始时间, 日期时间型
.局部变量 截图路径, 文本型
.局部变量 文件号, 整数型
.局部变量 文件数据, 字节集
.局部变量 不动秒数, 整数型
.局部变量 校验次数, 整数型
.局部变量 是否卡死, 整数型
.局部变量 连续卡死次数, 整数型
.局部变量 顶层句柄, 整数型


CoInitializeEx (0, 0)
大漠多线程 .小漠.创建 ()
小漠 = 大漠多线程 .小漠
.如果 (小漠.Ver () = “”)
    调试输出 (“小漠对象” + 到文本 (i) + “创建失败”)
.否则
    调试输出 (小漠.Ver ())
    调试输出 (“小漠对象” + 到文本 (i) + “创建成功”)
.如果结束
小漠.SetPath (取运行目录 () + “\pic\”)
小漠.SetDict (0, “D:\YYYBC\CrashFever\Pic\qiandao.txt”)
.判断循环首 (真)
    顶层句柄 = 小漠.FindWindow (“LDPlayerMainFrame”, “雷电模拟器-” + 到文本 (大漠多线程 .模拟器序号))
    .如果真 (顶层句柄 > 0)
        窗口句柄 = 小漠.GetWindow (顶层句柄, 1)
        .如果真 (窗口句柄 > 0)
            ret = 小漠.BindWindowEx (窗口句柄, “dx.graphic.opengl”, “windows3”, “windows”, “”, 0)
            辅助延时 (500, )
            .如果真 (ret = 1)
                列表框1.加入项目 (“窗口” + 到文本 (i) + “副绑定成功”, )
                跳出循环 ()
            .如果真结束


        .如果真结束


    .如果真结束
    调试输出 (“副绑定中”)
    辅助延时 (1200, )


.判断循环尾 ()


.判断循环首 (真)
    小漠.FindStrFast (5, 231, 456, 498, “暴走”, “313042-363636”, 0.9, x, y)
    .如果真 (x > 0)
        列表框1.加入项目 (“线程” + 到文本 (i) + “出现暴走界面”, )
        大漠多线程 .线程重启 = 真
    .如果真结束
    小漠.FindStrFast (23, 248, 426, 578, “通信环境”, “646375-363636”, 0.9, x, y)
    .如果真 (x > 0)
        列表框1.加入项目 (“线程” + 到文本 (i) + “出现通信环境界面”, )
        大漠多线程 .线程重启 = 真
    .如果真结束
    小漠.FindStrFast (32, 258, 388, 526, “屡次停止”, “333333-464646”, 0.9, x, y)
    .如果真 (x > 0)
        列表框1.加入项目 (“线程” + 到文本 (i) + “出现屡次停止界面”, )
        大漠多线程 .线程重启 = 真
    .如果真结束
    小漠.FindStrFast (116, 442, 330, 489, “校验”, “ffffff-363636”, 0.9, x, y)
    .如果真 (x > 0)
        校验次数 = 校验次数 + 1
        辅助延时 (1000, )
        .如果真 (校验次数 > 150)
            大漠多线程 .线程重启 = 真
        .如果真结束


    .如果真结束
    是否卡死 = 小漠.IsDisplayDead (10, 204, 458, 732, 3000)  ' 查看这个坐标区域内画面是否变化是否卡死,如果卡死=1就需要进行重启
    .如果 (是否卡死 = 1)
        连续卡死次数 = 连续卡死次数 + 1


        .如果真 (连续卡死次数 ≥ 200)
            连续卡死次数 = 0
            大漠多线程 .线程重启 = 真
        .如果真结束


    .否则
        连续卡死次数 = 0
    .如果结束


.判断循环尾 ()


.子程序 循环签到
.局部变量 i, 整数型
.局部变量 当前状态, 文本型


启动赋值 ()  ' 里面只有赋值的多开数量


.计次循环首 (全局多开数量, i)
    大漠多线程 .线程句柄 = 线程_启动 (&窗口线程, i, )
    .如果 (大漠多线程 .线程句柄 > 0)
        调试输出 (“线程” + 到文本 (i) + “启动成功”)
        大漠多线程 .线程重启 = 假
    .否则
        调试输出 (“线程” + 到文本 (i) + “启动失败”)
    .如果结束
    .判断循环首 (真)
        .如果真 (全局登录状态 = “绑定成功”)
            全局登录状态 = “”
            跳出循环 ()
        .如果真结束


    .判断循环尾 ()
    大漠多线程 .监控线程句柄 = 线程_启动 (&窗口监控线程, i, )
    .如果 (大漠多线程 .监控线程句柄 > 0)
        调试输出 (“监控线程” + 到文本 (i) + “启动成功”)


    .否则
        调试输出 (“监控线程” + 到文本 (i) + “启动失败”)
    .如果结束
    程序_延时 (2000, )
.计次循环尾 ()


.子程序 窗口线程
.参数 i, 整数型
.局部变量 大漠, dmsoft
.局部变量 模拟器序号, 整数型
.局部变量 分配账号索引, 整数型
.局部变量 账号文件名字, 文本型
.局部变量 顶层句柄, 整数型
.局部变量 窗口句柄, 整数型
.局部变量 ret, 整数型


CoInitializeEx (0, 0)  ' 初始化COM库,设置为MTA模式
大漠多线程 .大漠.创建 ()
大漠 = 大漠多线程 .大漠
调试输出 (大漠.Ver ())
大漠.SetPath (取运行目录 () + “\pic\”)
大漠.SetDict (0, “qiandao.txt”)
模拟器序号 = 取当前可运行模拟器序号1 ()
大漠多线程 .模拟器序号 = 模拟器序号
调试输出 (“模拟器序号”, 模拟器序号)
.如果真 (编辑框_模拟器路径.内容 = “”)
    信息框 (“请先写入模拟器路径”, 0, , )
.如果真结束
.如果真 (编辑框_多开数量.内容 = “”)
    信息框 (“请先填入多开数量”, 0, , )
.如果真结束
雷神_启动模拟器 (模拟器序号)
辅助延时 (23000, )
全局登录状态 = “”
.判断循环首 (真)
    顶层句柄 = 大漠.FindWindow (“LDPlayerMainFrame”, “雷电模拟器-” + 到文本 (模拟器序号))
    .如果真 (顶层句柄 > 0)
        大漠多线程 .进程ID = 窗口_句柄取进程ID (顶层句柄)
        调试输出 (“进程ID:”, 大漠多线程 .进程ID)
        窗口句柄 = 大漠.GetWindow (顶层句柄, 1)
        .如果真 (窗口句柄 > 0)
            大漠多线程 .窗口句柄 = 窗口句柄
            调试输出 (大漠多线程 .窗口句柄)
            ret = 大漠.BindWindowEx (窗口句柄, “dx.graphic.opengl”, “windows3”, “windows”, “”, 0)
            辅助延时 (500, )
            .如果真 (ret = 1)
                调试输出 (“窗口” + 到文本 (i) + “主绑定成功”)
                全局登录状态 = “绑定成功”
                跳出循环 ()
            .如果真结束


        .如果真结束




    .如果真结束


.判断循环尾 ()
分配账号索引 = 分配待签账号 ()
.判断循环首 (真)
    .如果 (分配账号索引 = 0)
        跳出循环 ()
    .否则
        账号文件名字 = 超级列表框1.取标题 (分配账号索引 - 1, 1)
    .如果结束


    .如果真 (终止签到 = 真)
        跳出循环 ()
    .如果真结束
    登录 (模拟器序号, 分配账号索引, 账号文件名字, 大漠)
    分配账号索引 = 分配待签账号 ()
.判断循环尾 ()


大漠.UnBindWindow ()
进程_结束 (大漠多线程 .进程ID)
大漠.释放 ()
线程_退出 (大漠多线程 .线程句柄)

.子程序 登录
.参数 模拟器序号, 整数型
.参数 分配账号索引, 整数型
.参数 账号文件名字, 文本型
.参数 大漠1, dmsoft
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 x1, 整数型
.局部变量 y1, 整数型
.局部变量 重试次数, 整数型
.局部变量 统计成功, 逻辑型
.局部变量 雷电, 雷神ls操作
.局部变量 复制结果, 逻辑型
.局部变量 账号目录, 文本型
.局部变量 共享目录, 文本型
.局部变量 a, 文本型
.局部变量 模拟器号, 文本型


账号目录 = “D:\YYYBC\SCZHBQ”
共享目录 = 子文本替换 (雷神_取共享目录 (模拟器序号, ), “/”, “\”, , , 真)
复制结果 = 文件_复制 (账号目录 + “\” + 账号文件名字, 共享目录 + “\测试\Mimisbrunnr.db”, )
辅助延时 (2200, )
.如果 (复制结果 = 假)
    调试输出 (“文件复制失败!尝试再复制一次,源文件:” + 账号目录 + “\” + 账号文件名字 + “ 目标目录:” + 共享目录)
    文件_复制 (账号目录 + “\” + 账号文件名字, 共享目录 + “\Mimisbrunnr.db”, )
    辅助延时 (2000, )
.否则
    调试输出 (“模拟器” + 到文本 (模拟器序号) + 账号文件名字 + “文件复制成功”)
.如果结束

.判断循环首 (真)
    ' 大漠1.FindStrFast (0, 0, 800, 480, “游戏图标”, “ffffff-464646”, 0.9, x, y)
    .' 如果真 (x > 0)
        ' 左键单击 (大漠1, x + 20, y - 20)
    .如果真结束
    大漠1.FindStrFast (122, 362, 358, 457, “没有可领取礼物”, “31304a-363636”, 0.9, x, y)  ' 在进行了上面的确认领取之后,显示没有可领取礼物,那么就可以读取钻石数量,进行关闭
    调试输出 (“没有可领取礼物”, x, y)
    .如果真 (x > 0)
        辅助延时 (500, )
        统计成功 = 统计物品 (分配账号索引, 账号文件名字, 大漠1)
        .如果 (统计成功 = 真)
            辅助延时 (200, )
            跳出循环 ()
        .否则
            反馈列表信息 (分配账号索引 - 1, 7, “签到失败”)
            跳出循环 ()


        .如果结束


    .如果真结束


.判断循环尾 ()
雷电.关闭应用 (模拟器序号, “jp.wonderplanet.CrashFever”)
辅助延时 (500, )


.子程序 取当前可运行模拟器序号1, 整数型, , 反着推,要找空闲的,只要找出在运行的,剩下的任意一个都是空闲的
.局部变量 a, 整数型
.局部变量 句柄数组, 整数型, , "0"
.局部变量 窗口标题, 文本型
.局部变量 运行中数组, 整数型, , "0"
.局部变量 可选择模拟器数组, 整数型, , "0"
.局部变量 i, 整数型
.局部变量 j, 整数型


窗口_枚举顶级窗口 (句柄数组, “LDPlayerMainFrame”, “雷电模拟器”)
调试输出 (“句柄数组:”, 句柄数组)
.如果真 (取数组成员数 (句柄数组) > 0)
    .计次循环首 (取数组成员数 (句柄数组), a)
        窗口标题 = 窗口_取标题 (句柄数组 [a])
        .判断开始 (取文本长度 (窗口标题) > 12)
            调试输出 (“窗口标题:”, 窗口标题, 取文本右边 (窗口标题, 2))
            加入成员 (运行中数组, 到整数 (取文本右边 (窗口标题, 2)))
        .判断 (取文本长度 (窗口标题) = 12)
            加入成员 (运行中数组, 到整数 (取文本右边 (窗口标题, 1)))
            调试输出 (“窗口标题:”, 窗口标题, 取文本右边 (窗口标题, 1))
        .默认


        .判断结束


    .计次循环尾 ()
    调试输出 (“数组:”, 运行中数组)


.如果真结束

.子程序 _按钮_一键停止_被单击
.局部变量 i, 整数型


.如果真 (全局主线程句柄 > 0)
    .计次循环首 (超级列表框1.取表项数 (), i)
        .如果真 (大漠多线程 .线程句柄 > 0)
            大漠多线程 .大漠.UnBindWindow ()
            大漠多线程 .大漠.释放 ()
            进程_结束 (大漠多线程 .进程ID)
            线程_强制结束 (大漠多线程 .线程句柄)
            线程_关闭句柄 (大漠多线程 .线程句柄)
            大漠多线程 .线程句柄 = 0
            大漠多线程 .进程ID = 0
            大漠多线程 .窗口句柄 = 0


        .如果真结束


    .计次循环尾 ()
.如果真结束




.子程序 _按钮_全部暂停_被单击
.局部变量 i, 整数型


.计次循环首 (超级列表框1.取表项数 (), i)
    线程_挂起 (大漠多线程 .线程句柄)
.计次循环尾 ()
线程_挂起 (全局主线程句柄)


.子程序 _按钮_全部恢复_被单击
.局部变量 i, 整数型


.计次循环首 (超级列表框1.取表项数 (), i)
    线程_恢复 (大漠多线程 .线程句柄)
.计次循环尾 ()
线程_恢复 (全局主线程句柄)

.子程序 _标签1_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
.局部变量 文本, 文本型
.局部变量 文本数组, 文本型, , "0"


文本 = 指针到文本 (参数二)
文本数组 = 分割文本 (文本, “|”, )
.如果真 (取数组成员数 (文本数组) ≥ 2)
    超级列表框1.置标题 (参数一, 到整数 (文本数组 [1]), 文本数组 [2])
.如果真结束




.子程序 反馈列表信息
.参数 表项数, 整数型
.参数 列项数, 整数型
.参数 标题, 文本型
.局部变量 数据, 文本型


数据 = 到文本 (列项数) + “|” + 标题
_标签1_反馈事件 (表项数 - 1, 取指针_文本型 (数据))




.子程序 _按钮_一键清除状态_被单击
.局部变量 i
.局部变量 行数组, 文本型, , "0"
.局部变量 单行列, 文本型, , "0"
.局部变量 新文本, 文本型
.局部变量 原文本, 文本型


.计次循环首 (超级列表框1.取表项数 (), i)
    超级列表框1.置标题 (i - 1, 6, “未签到”)  ' 清空状态列
.计次循环尾 ()
原文本 = 到文本 (读入文件 (取运行目录 () + “\config.ini”))
行数组 = 分割文本 (原文本, #换行符, )
.计次循环首 (取数组成员数 (行数组), i)
    单行列 = 分割文本 (行数组 , “|”, )
    .如果真 (取数组成员数 (单行列) ≥ 2)
        行数组 = 单行列 [1] + “|” + 单行列 [2] + “|未签到”


    .如果真结束


.计次循环尾 ()
新文本 = “”
.计次循环首 (取数组成员数 (行数组), i)
    新文本 = 新文本 + 行数组 + #换行符
.计次循环尾 ()
调试输出 (“新文本”, 新文本)
写到文件 (取运行目录 () + “\config.ini”, 到字节集 (新文本))




.子程序 重新获取模拟器渲染句柄, 逻辑型
.参数 实际序号, 整数型
.参数 i, 整数型
.局部变量 外层句柄, 整数型


.如果真 (实际序号 < 1)
    返回 (假)
.如果真结束
' 1. 重新找模拟器主窗口
外层句柄 = 全局大漠.FindWindow (“LDPlayerMainFrame”, “雷电模拟器-” + 到文本 (实际序号))
.如果真 (外层句柄 = 0)
    调试输出 (“重启获取模拟器窗口失败:”, 实际序号)
    返回 (假)
.如果真结束
' 2. 重新获取渲染句柄(关键!)
大漠多线程 .外层句柄 = 外层句柄
大漠多线程 .窗口句柄 = 全局大漠.GetWindow (外层句柄, 1)
调试输出 (大漠多线程 .窗口句柄)
调试输出 (“【重启刷新】模拟器”, 实际序号, “新渲染句柄=”, 大漠多线程 .窗口句柄)
返回 (真)




.子程序 重启单个雷电模拟器, 逻辑型
.参数 模拟器实际序号, 整数型
.局部变量 ld, 雷神lsconsole操作
.局部变量 标题, 文本型
.局部变量 外层句柄, 整数型
.局部变量 超时, 整数型


雷神_置安装目录 (“D:\leidian\LDPlayer9”, )
' 1. 关闭模拟器
ld.关闭模拟器 (模拟器实际序号)
辅助延时 (2000, )
' 2. 启动模拟器
ld.启动模拟器 (模拟器实际序号, , )
辅助延时 (3000, )
' 3. 等待窗口出现
超时 = 0
.判断循环首 (超时 < 20)
    外层句柄 = 全局大漠.FindWindow (“LDPlayerMainFrame”, “雷电模拟器-” + 到文本 (模拟器实际序号))
    .如果真 (外层句柄 ≠ 0)
        调试输出 (“模拟器” + 到文本 (模拟器实际序号) + “重启完成”)
        返回 (真)
    .如果真结束
    辅助延时 (1000, )
    超时 = 超时 + 1
.判断循环尾 ()
调试输出 (“模拟器” + 到文本 (模拟器实际序号) + “重启超时!”)
返回 (假)
,对于上面我删除了部分不影响寻找问题的无用代码,我一步步调试,进行窗口监控线程判断循环中的所有找字代码就弹出超出坐标无效句柄的弹窗,请问是什么原因?

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表