TC官方合作论坛

 找回密码
 立即注册
查看: 280|回复: 2
打印 上一主题 下一主题

[问题] 求大神看到底那里出错了,双线程同时启动识别不出字.

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-23 23:41:21 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
空间 游戏
变量 窗口句柄数组=数组[],dm数组=数组[],任务线程句柄=数组[],检测线程句柄=数组[]
变量 窗口标题=数组[],是否重定义=真
变量 index=0
变量 dm

功能 初始化()
    //注册大漠
功能结束

功能 启动_热键()
    窗口句柄 = 游戏.获取窗口句柄()

    如果(窗口句柄 > 0)
     游戏.窗口绑定(窗口句柄)
    如果结束
功能结束

功能 获取窗口句柄()
    变量 子句柄,大小,长度
    句柄=dm.GetForegroundWindow() //获取置于前端的窗口句柄
    调试输出(句柄)
    字符串.分割(句柄,"|",子句柄)
    数组空间.大小(子句柄,大小)
    如果(大小>0)
        调试输出(子句柄[0])
        如果(类型.转整型(子句柄[0])>0)
            句柄=类型.转整型(子句柄[0])
            调试输出(句柄)
            如果(是否重定义)
                //对数组进行重定义,个数是index
                窗口句柄数组=数组空间.重定义(窗口句柄数组,真,index+1)
                dm数组=数组空间.重定义(dm数组,真,index+1)
                任务线程句柄= 数组空间.重定义(任务线程句柄,真,index+1)
                检测线程句柄= 数组空间.重定义(检测线程句柄,真,index+1)
                窗口标题=数组空间.重定义(窗口标题,真,index+1)
            如果结束
            //x引入错误判断机制,判断当前获得的窗口句柄是否已经绑定了
            数组下标=数组空间.查找(窗口句柄数组,句柄)
            如果(数组下标==-1)
                //说明没有绑定过
                窗口句柄数组[index]=句柄
                返回 句柄
            否则
                调试输出("[请不要重复运行脚本]")
                返回 -1
            如果结束
        否则
            返回 -1
        如果结束
    如果结束
功能结束

功能 窗口绑定(句柄)
    变量 下标,长度
    下标=数组空间.查找(窗口句柄数组,句柄)
    调试输出("[主窗口绑定] 下标"&下标)
    dm数组[下标]=com("dm.dmsoft")
    dm数组[下标].SetPath(辅助.获取资源路径("rc:"))
    dm数组[下标].SetDict(0,"bwzh.txt")
    dm_ret=dm数组[下标].BindWindow(句柄,"dx","dx","dx",0)
    如果(dm_ret>0)
        标签.设置文本("标签0","工作中")
        任务线程句柄[下标]= 线程.开启("游戏.测试1",下标)
        检测线程句柄[下标]= 线程.开启("游戏.测试2",下标)
        index++
        数组空间.大小(窗口句柄数组,长度)
        如果(长度!=index)
            index=长度
        如果结束
        是否重定义=真
    否则
        调试输出("主窗口绑定失败")
        辅助.退出()
    如果结束   
功能结束   

功能 测试1(下标)
    intX,intY
    循环(真)
        dm数组[下标].FindStrFast(866,296,919,313,"神秘石","fdff3c-000000",0.9,intX,intY)
        if(intX >= 0)
            调试输出("测试1工作中")
            dm数组[下标].KeyPress(32)
        endif
        辅助.等待(1000)
    循环结束

功能结束

功能 测试2(下标)
    intX,intY
    循环(真)
        dm数组[下标].FindStrFast(860,2,904,25,"火之国","d2b48c-000000",0.9,intX,intY)
        if (intX >= 0 )
            调试输出("测试2工作中")
            dm数组[下标].KeyPress(66)
        endif
        辅助.等待(1000)
    循环结束   
功能结束

//===================下面是停止====================//

空间结束

测试时发现,两个线程同时工作找字时,找不到字,但如果一个线程找图,一个线程找字,两个线程都能识别到想要找的图和字,这个问题找了几天答案都找不到,我快晕了,求来个大神解答下.

回复

使用道具 举报

板凳
发表于 2015-4-24 10:07:50 | 只看该作者
最好是每个线程使用一个大漠对象,不要多个线程共用一个插件对象。
回复 支持 反对

使用道具 举报

沙发
发表于 2015-4-24 00:31:44 | 只看该作者
本帖最后由 1592003973 于 2015-4-24 00:38 编辑

估计是使用字库的问题,如果用大漠的话,每次用找字命令的话,最好先用一下大漠那个使用字库命令,再去找字,或者换一个找字的命令试一下,偏色也可以加一点
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-23 06:36 , Processed in 0.148363 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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