Q语言 一个自定义的多功能后台找图函数,非常好用

'---------------伪后台找图DC-带句柄-------------------------

Function 找图DC(句柄,图片名称,基准起点X,基准起点Y,基准终点X,基准终点Y)
    //伪后台(全局变量:hwnd,找图_intX,找图_intY)
    //调用函数:Lib.通用.getwindow_X(Hwnd);Lib.通用.getwindow_Y(Hwnd);Lib.通用.IsCol
    //------------------------------------------------------------------------
    //     跑环图标_bmp = "跑环图标_BMP,Z1,3,B25BC7,0,0,EEFAFF,0.7,-149,6,1,12" 
    //------------------------------------------------------------------------   
    //"伪图名称_BMP,搜索代码,查找方向,目标色值,返回相对基点坐标X,返回相对基点坐标Y,验正色值,色相似度,验正相对基点坐标X,验正相对基点坐标Y,定点基准X,定点基准Y"
    //"伪图名称_BMP,基准代码,查找方向,基准图片,返回相对基点坐标X,返回相对基点坐标Y,验正色值,色相似度,验正相对基点坐标X,验正相对基点坐标Y,相对基准X,相对基准Y"    
    //"伪图名称_BMP,搜索代码,查找方向,目标色块,返回相对基点坐标X,返回相对基点坐标Y,验正色值,色相似度,验正相对基点坐标X,验正相对基点坐标Y,色块宽值X,色块高值Y"   
    //"伪图名称_BMP,搜索代码,查找方向,找字词值,返回相对基点坐标X,返回相对基点坐标Y,验正色值,色相似度,验正相对基点坐标X,验正相对基点坐标Y,字号1   , 字号2"        
    //----------------------搜索代码-------------------------------------------
    //"L"//一区左半屏 "L1"//一区左半屏"L2"//一区左半屏
    //"R"//二区右半屏 "R1"//二区右半屏"R2"//二区右半屏
    //"T"//三区上半屏 "T1"//三区上半屏"T2"//三区上半屏
    //"B"//四区下半屏 "B1"//四区下半屏"B2"//四区下半屏
    //"A1","LT"//五区左上屏"A2","RT"//六区右上屏"A3","LB"//七区左下屏"A4","RB"//八区右下屏
    //"O"//九区中央
    //"Z0"//十区中心偏移"Z1"//左上角偏移"Z2"//右上角偏移"Z3"//左下角偏移"Z4"//右下角偏移
    //"G"//打怪区域(100, 100,Lib.通用.getwindow_X(Hwnd) - 100,Lib.通用.getwindow_Y(Hwnd) - 150)
    //----------------------基准代码(免搜索目标点)----------不支持找色快定图,找字定图--------------------------------
    //"J"//变量基准,(,基准起点X,基准起点Y)
    //"P"//定图基准X,定图基准X(不用时填-1)(相对图版基准)
    //"D"//定点基准X,定点基准Y(不用时填-1)
    //"D1"//左上角(0,0)"D2"  //右上角(Lib.通用.getwindow_X(Hwnd)-1,0)"D3"  //左下角(0,Lib.通用.getwindow_Y(Hwnd)-1)"D4"  //右下角(Lib.通用.getwindow_X(Hwnd)-1,Lib.通用.getwindow_Y(Hwnd)-1)
    //----------------------自定义色块搜索范围代码------------------------------------------    
    //"S"//自定义色块搜索范围 基准起点X,基准起点Y,基准终点X,基准终点Y
    //-----------------------------------------------------------------------
    //验正色值:支持相似度验正;(支持多值);如:     000000:FFFFFF       
    //目标色块;找字词值:支持色相似度
    //目标色值:只支持同色值搜索  
    //-----------------------------------------------------------------------
    //查找方向:找图   (0: 从左到右,从上到下 1:中间) 
    //查找方向:找色块 (0+2: 从左到右,从上到下 //1+2: 从左到右,从下到上    //2+2: 从右到左,从上到下    //3+2: 从右到左,从下到上    )  不支持基准代码(免搜索目标点)
    //查找方向:找字   (0+6: 从左到右,从上到下 //1+6: 从左到右,从下到上    //2+6: 从右到左,从上到下    //3+6: 从右到左,从下到上    )  不支持基准代码(免搜索目标点)免验正点验正
    //-----------------------------------------------------------------------
    Dim TP_ARR, XY, ZB, B_X, B_Y, n, sig
    Dim 搜索方式,验正点
    找图DC = 0
    n=10 //定义中心点偏移后点的找色范围,不宜过大,适用就可以
    sig=0  //字号位置校正参数
    TP_ARR = split(图片名称, ",")
    select case TP_ARR(1) 
    case "J" //变量基准
        B_X =基准起点X
        B_Y =基准起点Y
    Case "D"  //定点基准
        B_X =clng(TP_ARR(10))
        B_Y = clng(TP_ARR(11))
    Case "P"//定图基准
        Call 找图B(TP_ARR(3))
        B_X = 找图_intX +clng(TP_ARR(10))
        B_Y = 找图_intY +clng(TP_ARR(11))
    Case "D1"   //左上角(0,0)
        B_X =0
        B_Y =0
    Case  "D2"  //右上角(Lib.通用.getwindow_X(句柄)-1,0)
        B_X =Lib.通用.getwindow_X(句柄)-1
        B_Y =0
    case  "D3"  //左下角(0,Lib.通用.getwindow_Y(句柄)-1)
        B_X =0
        B_Y =Lib.通用.getwindow_Y(句柄)-1
    case  "D4"  //右下角(Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1)
        B_X =Lib.通用.getwindow_X(句柄)-1
        B_Y =Lib.通用.getwindow_Y(句柄)-1
    case Else
        Select case TP_ARR(2) 
        case  "1"
            Select Case TP_ARR(1)
            Case "L"//一区左半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "L1"//一区左半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 4, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "L2"//一区左半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 4, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "R"//二区右半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "R1"//二区右半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄) / 4 * 3, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "R2"//二区右半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 4 * 3, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "T"//三区上半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, 0, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3))
            Case "T1"//三区上半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, 0, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) / 4, TP_ARR(3))
            Case "T2"//三区上半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, Lib.通用.getwindow_Y(句柄) / 4, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3))
            Case "B"//四区下半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3))
            Case "B1"//四区下半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3))
            Case "B2"//四区下半屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, Lib.通用.getwindow_Y(句柄) / 4 * 3, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "A1","LT"//五区左上屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3))
            Case "A2","RT"//六区右上屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3))
            Case "A3","LB"//七区左下屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "A4","RB"//八区右下屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            Case "O"//九区中央
                XY = Plugin.Bkgnd.FindCenterColor(句柄, Lib.通用.getwindow_X(句柄) / 4, Lib.通用.getwindow_Y(句柄) / 4, Lib.通用.getwindow_X(句柄) / 4 * 3, Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3))
            Case "Z0"//十区中心偏移
                XY = Plugin.Bkgnd.FindCenterColor(句柄, (Lib.通用.getwindow_X(句柄) / 2 + TP_ARR(10)) - n, (Lib.通用.getwindow_Y(句柄) / 2 + TP_ARR(11)) - n, (Lib.通用.getwindow_X(句柄) / 2 + TP_ARR(10)) + n, (Lib.通用.getwindow_Y(句柄) / 2 + TP_ARR(11)) + n, TP_ARR(3))
            Case "Z1"//左上角偏移
                XY = Plugin.Bkgnd.FindCenterColor(句柄, (0 + TP_ARR(10)) - n, (0 + TP_ARR(11)) - n, (0 + TP_ARR(10)) + n, (0 + TP_ARR(11)) + n, TP_ARR(3))
            Case  "Z2"//右上角偏移
                XY = Plugin.Bkgnd.FindCenterColor(句柄, (Lib.通用.getwindow_X(句柄) -1+TP_ARR(10))-n,(0+TP_ARR(11))-n,(Lib.通用.getwindow_X(句柄) -1+TP_ARR(10))+n,(0+TP_ARR(11))+n,TP_ARR(3))
            Case "Z3"//左下角偏移
                XY = Plugin.Bkgnd.FindCenterColor(句柄, (0+TP_ARR(10))-n,(Lib.通用.getwindow_Y(句柄) -1+TP_ARR(11))-n,(0+TP_ARR(10))+n,(Lib.通用.getwindow_Y(句柄)-1+TP_ARR(11))+n,TP_ARR(3))
            Case  "Z4"//右下角偏移
                XY = Plugin.Bkgnd.FindCenterColor(句柄, (Lib.通用.getwindow_X(句柄) - 1 + TP_ARR(10)) - n, (Lib.通用.getwindow_Y(句柄) - 1 + TP_ARR(11)) - n, (Lib.通用.getwindow_X(句柄) - 1 + TP_ARR(10)) + n, (Lib.通用.getwindow_Y(句柄) - 1 + TP_ARR(11)) + n, TP_ARR(3))
                //            Case "G"//打怪
                //                XY = Plugin.Bkgnd.FindCenterColor(句柄, 100, 100, Lib.通用.getwindow_X(句柄) - 100, Lib.通用.getwindow_Y(句柄) - 150, TP_ARR(3))
            Case "S"//自定义
                XY = Plugin.Bkgnd.FindCenterColor(句柄,基准起点X,基准起点Y,基准终点X,基准终点Y, TP_ARR(3))                
            Case else//全屏
                XY = Plugin.Bkgnd.FindCenterColor(句柄, 0, 0, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3))
            End Select      
        Case "0"
            Select Case TP_ARR(1)
            Case "L"//一区左半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0, 0,  Lib.通用.getwindow_X(句柄) / 2,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "L1"//一区左半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0, 0,Lib.通用.getwindow_X(句柄) / 4,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "L2"//一区左半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄)/4,0,Lib.通用.getwindow_X(句柄)/2,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)                              
            Case "R"//二区右半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄) / 2, 0,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "R1"//二区右半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄) / 2, 0,Lib.通用.getwindow_X(句柄)/4*3,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "R2"//二区右半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄)/4*3,0,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)                            
            Case "T"//三区上半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0, 0,Lib.通用.getwindow_X(句柄),Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3),TP_ARR(2), 1)
            Case "T1"//三区上半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,  0,Lib.通用.getwindow_X(句柄),Lib.通用.getwindow_Y(句柄) / 4, TP_ARR(3),TP_ARR(2), 1)
            Case "T2"//三区上半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,  Lib.通用.getwindow_Y(句柄) / 4,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3),TP_ARR(2), 1)
            Case "B"//四区下半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,Lib.通用.getwindow_Y(句柄) / 2,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "B1"//四区下半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,Lib.通用.getwindow_Y(句柄) / 2,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)/4*3, TP_ARR(3),TP_ARR(2), 1)
            Case "B2"//四区下半屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,Lib.通用.getwindow_Y(句柄) / 4*3,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "A1","LT"//五区左上屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,0,Lib.通用.getwindow_X(句柄)/2,Lib.通用.getwindow_Y(句柄)/2, TP_ARR(3),TP_ARR(2), 1)
            Case "A2","RT"//六区右上屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄)/2,0,Lib.通用.getwindow_X(句柄),Lib.通用.getwindow_Y(句柄)/2, TP_ARR(3),TP_ARR(2), 1)                    
            Case "A3","LB"//七区左下屏
                XY = Plugin.Bkgnd.FindColorEx(句柄, 0,Lib.通用.getwindow_Y(句柄)/2,Lib.通用.getwindow_X(句柄)/2,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)
            Case "A4","RB"//八区右下屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄)/2,Lib.通用.getwindow_Y(句柄)/2,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)                   
            Case "O"//九区中央
                XY = Plugin.Bkgnd.FindColorEx(句柄,Lib.通用.getwindow_X(句柄) / 4,Lib.通用.getwindow_Y(句柄) / 4,Lib.通用.getwindow_X(句柄) / 4 * 3,Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3), TP_ARR(2), 1)
            Case "Z0"//十区中心偏移
                XY = Plugin.Bkgnd.FindColorEx(句柄, (Lib.通用.getwindow_X(句柄) / 2+TP_ARR(10))-n,(Lib.通用.getwindow_Y(句柄) / 2+TP_ARR(11))-n,(Lib.通用.getwindow_X(句柄) / 2+TP_ARR(10))+n,(Lib.通用.getwindow_Y(句柄) / 2+TP_ARR(11))+n,TP_ARR(3),TP_ARR(2), 1)
            Case "Z1"//左上角偏移
                XY = Plugin.Bkgnd.FindColorEx(句柄, (0+TP_ARR(10))-n,(0+TP_ARR(11))-n,(0+TP_ARR(10))+n,(0+TP_ARR(11))+n,TP_ARR(3),TP_ARR(2), 1)
            Case  "Z2"//右上角偏移
                XY = Plugin.Bkgnd.FindColorEx(句柄, (Lib.通用.getwindow_X(句柄) -1+TP_ARR(10))-n,(0+TP_ARR(11))-n,(Lib.通用.getwindow_X(句柄) -1+TP_ARR(10))+n,(0+TP_ARR(11))+n,TP_ARR(3),TP_ARR(2), 1)
            Case  "Z3"//左下角偏移
                XY = Plugin.Bkgnd.FindColorEx(句柄, (0+TP_ARR(10))-n,(Lib.通用.getwindow_Y(句柄) -1+TP_ARR(11))-n,(0+TP_ARR(10))+n,(Lib.通用.getwindow_Y(句柄)-1+TP_ARR(11))+n,TP_ARR(3),TP_ARR(2), 1)
            Case  "Z4"//右下角偏移
                XY = Plugin.Bkgnd.FindColorEx(句柄, (Lib.通用.getwindow_X(句柄)-1+TP_ARR(10))-n,(Lib.通用.getwindow_Y(句柄)-1+TP_ARR(11))-n,(Lib.通用.getwindow_X(句柄) -1+TP_ARR(10))+n,(Lib.通用.getwindow_Y(句柄) -1+TP_ARR(11))+n,TP_ARR(3),TP_ARR(2), 1)
                //            Case "G"//打怪
                //                XY = Plugin.Bkgnd.FindColorEx(句柄, 100, 100, Lib.通用.getwindow_X(句柄) - 100, Lib.通用.getwindow_Y(句柄) - 150, TP_ARR(3), TP_ARR(2), 1)
            Case "S"//自定义
                XY = Plugin.Bkgnd.FindColorEx(句柄, 基准起点X,基准起点Y,基准终点X,基准终点Y, TP_ARR(3), TP_ARR(2), 1)            
            Case else//全屏
                XY = Plugin.Bkgnd.FindColorEx(句柄,0,0,Lib.通用.getwindow_X(句柄)-1,Lib.通用.getwindow_Y(句柄)-1, TP_ARR(3),TP_ARR(2), 1)   
            End Select
        Case "2", "3", "4", "5"
            搜索方式 = clng(TP_ARR(2)) - 2
            Select Case TP_ARR(1)
            Case "L"//一区左半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, 0, Lib.通用.getwindow_X(句柄)  / 2, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "L1"//一区左半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, 0, Lib.通用.getwindow_X(句柄)  / 4, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "L2"//一区左半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄,Lib.通用.getwindow_X(句柄) /4,0, Lib.通用.getwindow_X(句柄) /2, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))                             
            Case "R"//二区右半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, Lib.通用.getwindow_X(句柄)  / 2, 0, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "R1"//二区右半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, Lib.通用.getwindow_X(句柄)  / 2, 0, Lib.通用.getwindow_X(句柄) /4*3, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "R2"//二区右半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄,Lib.通用.getwindow_X(句柄) /4*3,0, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))                         
            Case "T"//三区上半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, 0, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄)  / 2, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "T1"//三区上半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0,  0, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄)  / 4, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "T2"//三区上半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0,  Lib.通用.getwindow_Y(句柄)  / 4, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄)  / 2, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "B"//四区下半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, Lib.通用.getwindow_Y(句柄)  / 2, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "B1"//四区下半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, Lib.通用.getwindow_Y(句柄)  / 2, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) /4*3, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "B2"//四区下半屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, Lib.通用.getwindow_Y(句柄)  / 4*3, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "A1","LT"//五区左上屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0,0, Lib.通用.getwindow_X(句柄) /2,Lib.通用.getwindow_Y(句柄) /2, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "A2","RT"//六区右上屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄,Lib.通用.getwindow_X(句柄) /2,0,Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) /2, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))                  
            Case "A3","LB"//七区左下屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 0, Lib.通用.getwindow_Y(句柄) /2,Lib.通用.getwindow_X(句柄) /2, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
            Case "A4","RB"//八区右下屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄,Lib.通用.getwindow_X(句柄) /2, Lib.通用.getwindow_Y(句柄) /2, Lib.通用.getwindow_X(句柄) , Lib.通用.getwindow_Y(句柄) , TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))                  
            Case "O"//九区中央
                XY = Plugin.Bkgnd.FindColorBlock(句柄, Lib.通用.getwindow_X(句柄)  / 4, Lib.通用.getwindow_Y(句柄)  / 4, Lib.通用.getwindow_X(句柄)  / 4 * 3, Lib.通用.getwindow_Y(句柄)  / 4 * 3, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))
                //            Case "G"//打怪
                //                XY = Plugin.Bkgnd.FindColorBlock(句柄, 100,100, Lib.通用.getwindow_X(句柄) - 300, Lib.通用.getwindow_Y(句柄) - 150, TP_ARR(3), TP_ARR(10), TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                //                 
            Case "S","G"//自定义
                XY = Plugin.Bkgnd.FindColorBlock(句柄, 基准起点X,基准起点Y,基准终点X,基准终点Y, TP_ARR(3), TP_ARR(10), TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
            Case Else//全屏
                XY = Plugin.Bkgnd.FindColorBlock(句柄,0,0, Lib.通用.getwindow_X(句柄) -1, Lib.通用.getwindow_Y(句柄) -1, TP_ARR(3), TP_ARR(10),TP_ARR(11),搜索方式,cdbl(TP_ARR(7)))           
            End Select  
        Case "6", "7", "8", "9"
            搜索方式 = clng(TP_ARR(2)) - 6
            Select Case TP_ARR(1)
            Case "L"//一区左半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(10) , 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "L1"//一区左半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 4, Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(10), 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 4, Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "L2"//一区左半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄,Lib.通用.getwindow_X(句柄) /4,0, Lib.通用.getwindow_X(句柄) /2, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), "", TP_ARR(10), 搜索方式,cdbl(TP_ARR(7)))                                
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄,Lib.通用.getwindow_X(句柄) /4,0, Lib.通用.getwindow_X(句柄) /2, Lib.通用.getwindow_Y(句柄) , TP_ARR(3), "", TP_ARR(11), 搜索方式,cdbl(TP_ARR(7)))                                
                    sig=1
                End If
            Case "R"//二区右半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "R1"//二区右半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄) / 4 * 3, Lib.通用.getwindow_Y(句柄), TP_ARR(3),  "",TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄) / 4 * 3, Lib.通用.getwindow_Y(句柄), TP_ARR(3),  "",TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "R2"//二区右半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 4 * 3, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3),  "",TP_ARR(10), 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 4 * 3, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3),  "",TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "T"//三区上半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3), "", TP_ARR(10) , 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3), "", TP_ARR(11) , 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "T1"//三区上半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 4, TP_ARR(3),  "",TP_ARR(10), 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 4, TP_ARR(3),  "",TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "T2"//三区上半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 4, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3),  "",TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 4, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3),  "",TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "B"//四区下半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "B1"//四区下半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3),  "",TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3),  "",TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "B2"//四区下半屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 4 * 3, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(10), 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 4 * 3, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "A1","LT"//五区左上屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3), "", TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3), "", TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "A2","RT"//六区右上屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3),  "",TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, 0, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄) / 2, TP_ARR(3),  "",TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "A3","LB"//七区左下屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(10) , 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄), TP_ARR(3), "", TP_ARR(11) , 搜索方式, cdbl(TP_ARR(7)))   
                    sig=1
                End If
            Case "A4","RB"//八区右下屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3),  "",TP_ARR(10),   搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 2, Lib.通用.getwindow_Y(句柄) / 2, Lib.通用.getwindow_X(句柄), Lib.通用.getwindow_Y(句柄), TP_ARR(3),  "",TP_ARR(11),   搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "O"//九区中央
                XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 4, Lib.通用.getwindow_Y(句柄) / 4, Lib.通用.getwindow_X(句柄) / 4 * 3, Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3),  "",TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, Lib.通用.getwindow_X(句柄) / 4, Lib.通用.getwindow_Y(句柄) / 4, Lib.通用.getwindow_X(句柄) / 4 * 3, Lib.通用.getwindow_Y(句柄) / 4 * 3, TP_ARR(3),  "",TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "G"//打怪
                XY = Plugin.Bkgnd.FindWordShape(句柄, 100, 100, Lib.通用.getwindow_X(句柄) - 300, Lib.通用.getwindow_Y(句柄) - 150, TP_ARR(3), TP_ARR(10),  搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 100, 100, Lib.通用.getwindow_X(句柄) - 300, Lib.通用.getwindow_Y(句柄) - 150, TP_ARR(3), TP_ARR(11),  搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case "S"//自定义
                XY = Plugin.Bkgnd.FindWordShape(句柄, 基准起点X, 基准起点Y, 基准终点X, 基准终点Y, TP_ARR(3), "", TP_ARR(10), 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 基准起点X, 基准起点Y, 基准终点X, 基准终点Y, TP_ARR(3), "", TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            Case Else//全屏
                XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3), "", TP_ARR(10), 搜索方式, cdbl(TP_ARR(7)))
                If XY = "-1|-1" and TP_ARR(11)<>0 Then 
                    XY = Plugin.Bkgnd.FindWordShape(句柄, 0, 0, Lib.通用.getwindow_X(句柄) - 1, Lib.通用.getwindow_Y(句柄) - 1, TP_ARR(3), "", TP_ARR(11), 搜索方式, cdbl(TP_ARR(7)))
                    sig=1
                End If
            End Select
        end select          
        ZB = InStr(XY, "|")
        B_X = Clng(Left(XY, ZB - 1)) : B_Y = Clng(Right(XY, Len(XY) - ZB))
    End Select
    If B_X >= 0 and B_Y >= 0 Then 
        If (clng(TP_ARR(8)) = 0 and clng(TP_ARR(9)) = 0)  or  instr("6789",TP_ARR(2))>0  Then  //免验正点验正(验正点坐标为0,找字类型)
            //                找图_intX = cint(TP_ARR(4))+ b_x+sig
            //                找图_intY = cint(TP_ARR(5)) + B_Y       
            找图_intX = TP_ARR(4)+ b_x+sig
            找图_intY = TP_ARR(5)+ B_Y   
            找图DC=1
            日志运行内容 = V_当前程序 & "DX----------->找到图片:" & TP_ARR(0) & "[" & TP_ARR(1) & "]" & "[" & TP_ARR(3) & "]" & "(" & B_X & "," & B_Y & ")"           
        Else 
            验正点=Plugin.Bkgnd.GetPixelColor(句柄, clng(TP_ARR(8)) + b_x, clng(TP_ARR(9)) + B_Y)
            If TP_ARR(7) = 1 Then 
                If  instr(TP_ARR(6),验正点)  > 0    Then 
                    找图_intX = TP_ARR(4)+ b_x
                    找图_intY = TP_ARR(5)+ B_Y   
                    找图DC=1
                    日志运行内容 = V_当前程序 & "DX----------->找到图片:" & TP_ARR(0) & "[" & TP_ARR(1) & "]" & "[" & TP_ARR(3) & "]" & "(" & B_X & "," & B_Y & ")"
                Else 
                    找图_intX = - 1 
                    找图_intY = - 1 
                    日志运行内容 =  V_当前程序&"DX未找到图片: "&TP_ARR(0)&"["&TP_ARR(1)&"]"&"["&TP_ARR(3)&"]"&"("&B_X&","&B_Y&") 验正点:["&验正点&"]("&TP_ARR(8)&","&TP_ARR(9)&")"
                End If
            Else
                If Lib.通用.IsCol(验正点, TP_ARR(6), cdbl(TP_ARR(7)))=true Then 
                    找图_intX = TP_ARR(4)+ b_x
                    找图_intY = TP_ARR(5)+ B_Y                
                    找图DC=1
                    日志运行内容 =  V_当前程序&"DX----->找到图片:"&TP_ARR(0)&"["&TP_ARR(1)&"]"&"["&TP_ARR(3)&"]"&"("&B_X&","&B_Y&")" 
                Else 
                    找图_intX = - 1 
                    找图_intY = - 1 
                    日志运行内容 =  V_当前程序&"DX未找到图片: "&TP_ARR(0)&"["&TP_ARR(1)&"]"&"["&TP_ARR(3)&"]"&"("&B_X&","&B_Y&") 验正点:["&验正点&"]("&TP_ARR(8)&","&TP_ARR(9)&")"
                End If        
            End If
        End If        
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容         
    Else 
        找图_intX = - 1 
        找图_intY = - 1 
        日志运行内容 = V_当前程序 & "DX未找到图片: " & TP_ARR(0) & "[" & TP_ARR(1) & "]" & "[" & TP_ARR(3) & "]" & "(" & B_X & "," & B_Y & ")"
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容         
    End If
End Function

猜你喜欢

转载自blog.51cto.com/12815848/2535060