TC官方合作论坛

标题: 大漠后台循环找图,x、y坐标不刷新 [打印本页]

作者: yur126    时间: 2016-7-31 11:25
标题: 大漠后台循环找图,x、y坐标不刷新
求大侠帮忙看一下,大漠后台循环找图,第一次找到图后输出的x y坐标是正确的,但是第二次找图,就算没有图仍然显示找到图了,而且就是第一次找到的图的坐标,代码如下:

功能 脚本线程()
    变量 dm,ts,hwnd,ret,rat,find,s,u,c,t,x,y
    dm=com("dm.dmsoft")                                                //调用大漠
    等待(100)
    t=dm.SetPath("E:\\test")                                             //设置路径
    等待(100)                        
    u=dm.SetDict(0,"tc.txt")                                             //设置字库
    等待(100)
    如果(u==0)
        消息框("失败")
    结束
    c=dm.GetNowDict()                                                    //获取字库序号
    调试输出(c)
    等待(200)
    消息框("请将鼠标放在指定窗口,并等待2秒")
    等待(1500)
    hwnd=dm.GetMousePointWindow()                                      //鼠标获取窗口句柄
    调试输出(hwnd)
    如果(hwnd==0)
        消息框("获取句柄失败")
    结束
    等待(500)
    ret = dm.BindWindow(hwnd,"gdi","windows","windows",0)             //绑定后台
    如果(ret==0)
        消息框("绑定后台失败")
    结束
    等待(1000)
    循环(I)
        等待(500)
        find =dm.FindPic(0,0,1920,1080,"7.bmp","000000",0.9,0,x,y)      //后台找图
        调试输出(find)
        调试输出(x)
        调试输出(y)
        等待(500)
        如果(find>-1)
            等待(200)
            dm.MoveTo(x,y)
            等待(10)
            dm.LeftClick()
        否则
            调试输出("未找到")
        结束
        等待(500)
        ts.FreeProcessMemory(hwnd)
        等待(1500)
        find =dm.FindPic(0,0,200,200,"11.bmp","000000",0.9,0,x,y)       //后台找图
        调试输出(find)
        调试输出(x)
        调试输出(y)
        等待(500)
        如果(find>-1)
            跳出
        否则
            调试输出("未找到")
        结束
        等待(500)
    结束
    s=dm.UnBindWindow()
    如果(s==1)
        消息框("解绑成功")
    结束
结束   



作者: tan0360    时间: 2016-7-31 20:31
你的功能不多代码不少 。请优化一下你的代码 ,把绑定 找图写成函数调用 ,前面的 大漠绑定 设置路径字库 别写的那么麻烦  还有你这单线程 写成死循环 不好
最好写成条件循环 。。这样不容易出错。。
比如
变量 a  =1 ,结果
循环( a == 1)
等待(100)
结果 =dm.FindPic(0,0,1920,1080,"7.bmp|11.bmp","000000",0.9,0,x,y)      //后台找图  //清合理利用大漠文档中找多图 原则
       //你这里加这多的东西么用
        如果(find>-1)
            等待(200)
            dm.MoveTo(x,y)
            等待(10)
            dm.LeftClick()
  else
       调试输出(结果)
    调试输出(“没有找到图”)
结束
结束
  如果是 不同图不一样的操作  则使用   
选择(结果)  //这里的 结果 就是  你上边 找图返回的值 如果 没有 返回 -1  如果 找到  ,从索引 0 开始 你有几个图 就有几个索引。
条件  0  //带表找到第一个图 7.bmp
功能
条件  1 //代表 找到第二图 11.bmp
  共能  
  //也可以写个
默认
调试输出(“未找到 需要的图 ”)
//然后是你找不到图要干的事
结束
   

         

作者: tan0360    时间: 2016-7-31 20:33
没给你家条件 在else 下加  a =  0  这样 a的值 改变   就不循环了  ,或者 在默认下 加 a= 0
作者: yur126    时间: 2016-8-1 10:12
tan0360 发表于 2016-7-31 20:31
你的功能不多代码不少 。请优化一下你的代码 ,把绑定 找图写成函数调用 ,前面的 大漠绑定 设置路径字库  ...

非常感谢~
作者: yur126    时间: 2016-8-1 11:10
tan0360 发表于 2016-7-31 20:33
没给你家条件 在else 下加  a =  0  这样 a的值 改变   就不循环了  ,或者 在默认下 加 a= 0  ...

真的很感谢,效率提高了不少
作者: tan0360    时间: 2016-8-1 17:14
可以用 就请你采纳 ,不然 回答没回报多不好
作者: yur126    时间: 2016-8-2 10:39
tan0360 发表于 2016-8-1 17:14
可以用 就请你采纳 ,不然 回答没回报多不好

找不到采纳啊




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1