开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 331|回复: 2
收起左侧

[完成] 大漠多线程

 关闭 [复制链接]
结帖率:100% (3/3)
发表于 2025-2-5 14:30:11 | 显示全部楼层 |阅读模式   江苏省南通市
10精币
.版本 2
.支持库 spec

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

注销快捷键 ()
设置快捷键 ()
' 启动脚本 ()
主线程句柄 = 线程_启动 (&启动脚本, , )

.子程序 启动脚本, , , 主线程
.局部变量 子程序集, 子程序指针, , "10", 存储线程任务指针的数组
.局部变量 i, 整数型

CoInitializeEx (0, 0)  ' 初始化COM库,设置为MTA模式
dm.Play (“按钮音效.mp3”)
.如果真 (启动按钮.禁止 = 真)
    返回 ()
.如果真结束
启动按钮.禁止 = 真
游戏句柄 = 窗口_取句柄 (, , “CosClient”, )
游戏绑定句柄 = 窗口_取句柄 (游戏句柄, , , )
窗口_置位置和大小 (游戏句柄, , , 1308, 955)
检测时钟.时钟周期 = 5000
取位移技能 ()
.如果 (Q技能选择框.选中 = 真)
    血条图片 = “血条1.bmp”
.否则
    血条图片 = “血条1.bmp|血条2.bmp|血条4.bmp|英雄血条.bmp”
.如果结束
停止标志位 = 假

.如果真 (收费后台模式选择框.选中 = 真)
    .如果 (dm.Reg (“************************加密”, “”) = 1)
        调试输出 (“大漠VIP注册成功”)
        .如果 (dm.BindWindowEx (游戏绑定句柄, “dx.graphic.3d.10plus”, “dx.mouse.input.lock.api2|dx.mouse.position.lock.message”, “windows”, “dx.public.disable.window.position”, 0) = 1)
            调试输出 (“后台绑定成功”)
            dm.SetDict (0, “字库.txt”)
        .否则
            信息框 (“后台绑定失败”, 0, , )
            返回 ()
        .如果结束

    .否则
        信息框 (“大漠VIP注册失败,返回值为:” + 到文本 (dm.GetLastError ()), 0, , )
        ' dm.释放 ()
        返回 ()
    .如果结束

.如果真结束

' dx.mouse.position.lock.message
.如果 (前台模式选择框.选中 = 假)
    .如果真 (收费后台模式选择框.选中 = 假)
        .如果 (dm.BindWindowEx (游戏绑定句柄, “dx2”, “windows”, “windows”, “dx.public.disable.window.position”, 0) = 1)
            调试输出 (“后台绑定成功0”)
            dm.SetDict (0, “字库.txt”)
        .否则
            .如果 (dm.BindWindowEx (游戏绑定句柄, “dx.graphic.3d”, “dx.mouse.position.lock.message”, “windows”, “dx.public.disable.window.position”, 2) = 1)
                调试输出 (“后台绑定成功2”)
                dm.SetDict (0, “字库.txt”)
            .否则
                .如果 (dm.BindWindowEx (游戏绑定句柄, “dx.graphic.3d”, “dx.mouse.position.lock.message”, “windows”, “dx.public.disable.window.position”, 4) = 1)
                    调试输出 (“后台绑定成功4”)
                    dm.SetDict (0, “字库.txt”)
                .否则
                    信息框 (“后台绑定失败”, 0, , )
                    返回 ()
                .如果结束

            .如果结束

        .如果结束

    .如果真结束

.否则
    窗口_置位置和大小 (游戏句柄, 0, 0, 1308, 955)
    dm.BindWindowEx (游戏绑定句柄, “normal”, “normal”, “normal”, “dx.public.disable.window.position”, 0)
.如果结束


子程序集 = { &跑图, &捡箱子, &捡箱子2, &神行, &分解, &分解叉, &技能 }
线程总数 = 取数组成员数 (子程序集)
.计次循环首 (线程总数, i)
    线程句柄集 [i] = 线程_启动 (子程序集 [i], , )
    程序_延时 (10, 0)
.计次循环尾 ()

以上是我的启动代码,当我使用子程序的调用方法也就是“启动脚本 ()”可以正常绑定游戏并且操作游戏,但是当我用线程的方式“主线程句柄 = 线程_启动 (&启动脚本, , )”,调试输出显示绑定成功,子线程也启动了,但是不会操作游戏窗口,这是什么原因,求助各位大佬了,感谢

最佳答案

查看完整内容

调用子程序和启动线程的区别:调用子程序,调用完了还是在主线程;启动线程,执行完了这个线程就不存在了 所以尝试着在这段代码末尾加上无限循环等待,等你把这些子程序集的任务完成了以后,再让这个循环跳出,结束这个线程,例如下面这段代码 .版本 2 .判断循环首 (是否执行完子程序集任务=假) 程序_延时(500,0) .判断循环尾 () ...

签到天数: 10 天

发表于 2025-2-5 14:30:12 | 显示全部楼层   江西省*
调用子程序和启动线程的区别:调用子程序,调用完了还是在主线程;启动线程,执行完了这个线程就不存在了
所以尝试着在这段代码末尾加上无限循环等待,等你把这些子程序集的任务完成了以后,再让这个循环跳出,结束这个线程,例如下面这段代码
.版本 2

.判断循环首 (是否执行完子程序集任务=假)
    程序_延时(500,0)
.判断循环尾 ()

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

发表于 2025-2-5 16:16:14 | 显示全部楼层   河南省开封市

多线程.png

我无法给你排查代码.不过我可以建议你看下大漠官方多线程源码例子.用大漠类库生成工具生成多线程例子
大漠官方提供的多线程例子是最标准的.
大漠工具下载:
123云盘:https://vip.123pan.cn/1824865303/dm/dm%E5%AF%86%E7%A0%811234.rar
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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