Q语言 我的命令库《通用找图》之后台找图函数源码
admin
2023-01-21 09:01:07
0

'---------------------后台找图B-------------------------------------

Function 找图B(pictname)
    //    后台找图
    Dim icoord, Xy
    iCoord = Plugin.Bkgnd.FindPic(Hwnd, 0, 0,Lib.通用.getwindow_X(Hwnd) - 1,Lib.通用.getwindow_Y(Hwnd) - 1, bmp_path & pictname, 0, 0.6)
    XY = Split(iCoord,"|")   
    找图_intx= XY(0)   
    找图_inty= XY(1)       
    If 找图_intx >= 0 and 找图_inty >= 0 Then 
        日志运行内容 = V_当前程序 & "B-------------->找到pict:" & pictname&"("&找图_intx&","&找图_inty&")"
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
        找图B=1
    Else 
        日志运行内容 = V_当前程序 & "B未找到pict:" & pictname
        Call Lib.通用.输出日志(日志运行内容) : TracePrint 日志运行内容
        找图B=0          
    End If
End Function

Function 找图点击B(pictname, 偏移X, 偏移Y)
    Dim 返回值
    找图点击B=0
    返回值= 找图B(pictname)
    If 返回值 > 0 Then 
        Call Plugin.Bkgnd.MoveTo(Hwnd, 找图_intX + cint(偏移X), 找图_intY + cint(偏移Y))
        Delay 50
        Call Plugin.Bkgnd.LeftClick(Hwnd, 找图_intX+cint(偏移X), 找图_intY+cint(偏移Y))
        日志运行内容 = V_当前程序 & "B---------->点击pict:" & pictname
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容          
        找图点击B = 1
    End If
End Function

Function 找多图B(pictname)
    Dim I,返回值,pict
    找多图B = 0
    找多图_intX = -1
    找多图_intY = -1
    pict = split(pictname, "|")
    For i = 0 To ubound(pict)
        返回值=找图B (pict(i))
        If 返回值 > 0 Then 
            日志运行内容 =  V_当前程序&"找到:第" & cstr(i + 1) & "张pict:" & pict(i)
            Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
            找多图_intX = 找图_intX
            找多图_intY = 找图_intY                
            找多图B=i+1
            Exit For
        End If
    Next
End Function

Function 找多图点击B(pictname, 偏移X, 偏移Y)
    Dim 返回值
    找多图点击B=0
    返回值= 找多图B(pictname)
    If 返回值 > 0 Then 
        Call Plugin.Bkgnd.MoveTo(Hwnd, 找多图_intX + cint(偏移X), 找多图_intY + cint(偏移Y))
        Delay 50
        Call Plugin.Bkgnd.LeftClick(Hwnd, 找多图_intX+cint(偏移X), 找多图_intY+cint(偏移Y))
        日志运行内容 =  V_当前程序&"A------------->点击pict:"&pictname    
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
        找多图点击B = 返回值
    End If
End Function

Function 等图B(pictname)
    Dim 返回值    
    日志运行内容 =  V_当前程序&"B正在等待pict....:" & pictname
    Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
    等图B=0
    等图_intX = -1
    等图_intY = -1
    For 10000
        返回值 = 找图B(pictname)
        If 返回值 > 0 Then 
            日志运行内容 =  V_当前程序&"B------------->等到pict:" & pictname
            Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
            等图_intX = 找图_intX
            等图_intY = 找图_intY            
            等图B=1
            Exit For
        End If
        Delay 500          
    Next
End Function

Function 等图点击B(pictname, 偏移X, 偏移Y)
    Dim 返回值
    日志运行内容 =  V_当前程序&"正在等待点击pict....:" & pictname
    Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
    等图点击B = 0
    等图_intX = -1
    等图_intY = -1          
    For 10000
        返回值 = 找图B(pictname)
        If 返回值 > 0 Then 
            等图_intX = 找图_intX 
            等图_intY = 找图_intY       
            Call Plugin.Bkgnd.MoveTo(Hwnd, 等图_intX + cint(偏移X), 等图_intY + cint(偏移Y))
            Delay 50
            Call Plugin.Bkgnd.LeftClick(Hwnd, 等图_intX+cint(偏移X), 等图_intY+cint(偏移Y))
            日志运行内容 =  V_当前程序&"B-------------->点击pict:" & pictname
            Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
            等图点击B=1
            Exit For
        End If
        Delay 500            
    Next
End Function

Function 等多图B(pictname)
    Dim 返回值
    等多图B=0
    等多图_intX = -1
    等多图_intY = -1
    For 10000
        返回值=找多图B(pictname)
        If 返回值 > 0 Then 
            等多图B = 返回值
            等多图_intX = 找多图_intX
            等多图_intY = 找多图_intY
            Exit For
        End If
        日志运行内容 =  V_当前程序&"遍历一次,未等到所有pict"
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
        Delay 500    
    Next
End Function

'---------------------后台找图BC---带句柄-------------------------

Function 找图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
    //    后台找图,自带句柄
    Dim icoord, Xy
    //    TracePrint bmp_path
    iCoord = Plugin.Bkgnd.FindPic(句柄,基准起点X,基准起点Y,基准终点X,基准终点Y, bmp_path & pictname, 0, 0.6)
    XY = Split(iCoord,"|")   
    找图_intx= XY(0)   
    找图_inty= XY(1)       
    If 找图_intx >= 0 and 找图_inty >= 0 Then 
        日志运行内容 = V_当前程序 & "C-------------->找到pict:" & pictname&"("&找图_intx&","&找图_inty&")"
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
        找图BC=1
    Else 
        日志运行内容 = V_当前程序 & "C未找到pict:" & pictname
        Call Lib.通用.输出日志(日志运行内容) : TracePrint 日志运行内容
        找图BC=0          
    End If
End Function

Function 找图点击BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y, 偏移X, 偏移Y)
    Dim 返回值
    找图点击BC=0
    返回值= 找图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
    If 返回值 > 0 Then 
        Call Plugin.Bkgnd.MoveTo(句柄, 找图_intX + cint(偏移X), 找图_intY + cint(偏移Y))
        Delay 50
        Call Plugin.Bkgnd.LeftClick(句柄, 找图_intX+cint(偏移X), 找图_intY+cint(偏移Y))
        日志运行内容 = V_当前程序 & "C---------->点击pict:" & pictname
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容          
        找图点击BC = 1
    End If
End Function

Function 找多图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
    Dim I,返回值,pict
    找多图BC = 0
    找多图_intX = -1
    找多图_intY = -1
    pict = split(pictname, "|")
    For i = 0 To ubound(pict)
        返回值=找图BC(句柄,pict(i),基准起点X,基准起点Y,基准终点X,基准终点Y)
        If 返回值 > 0 Then 
            日志运行内容 =  V_当前程序&"C找到:第" & cstr(i + 1) & "张pict:" & pict(i)
            Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
            找多图_intX = 找图_intX
            找多图_intY = 找图_intY                
            找多图BC=i+1
            Exit For
        End If
    Next
End Function

Function 找多图点击BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y, 偏移X, 偏移Y)
    Dim 返回值
    找多图点击BC=0
    返回值= 找多图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
    If 返回值 > 0 Then 
        //                  Call Lib.窗口.弹出对话框(偏移X&"......", 1, "", 0)
        Call Plugin.Bkgnd.MoveTo(句柄, 找多图_intX + cint(偏移X), 找多图_intY + cint(偏移Y))
        Delay 50
        Call Plugin.Bkgnd.LeftClick(句柄, 找多图_intX + cint(偏移X), 找多图_intY + cint(偏移Y))
        日志运行内容 =  V_当前程序&"A------------->点击pict:"&pictname    
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
        找多图点击BC = 返回值
    End If
End Function

Function 等图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
    Dim 返回值    
    日志运行内容 =  V_当前程序&"C正在等待pict....:" & pictname
    Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
    等图BC=0
    等图_intX = -1
    等图_intY = -1
    For 10000
        返回值 = 找图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
        If 返回值 > 0 Then 
            日志运行内容 =  V_当前程序&"C------------->等到pict:" & pictname
            Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
            等图_intX = 找图_intX
            等图_intY = 找图_intY            
            等图BC=1
            Exit For
        End If
        Delay 500          
    Next
End Function

Function 等多图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
    Dim 返回值
    等多图BC=0
    等多图_intX = -1
    等多图_intY = -1
    For 10000
        返回值=找多图BC(句柄,pictname,基准起点X,基准起点Y,基准终点X,基准终点Y)
        If 返回值 > 0 Then 
            等多图BC = 返回值
            等多图_intX = 找多图_intX
            等多图_intY = 找多图_intY
            Exit For
        End If
        日志运行内容 =  V_当前程序&"遍历一次,未等到所有pict"
        Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
        Delay 500   
    Next
End Function

'-------------------------------------------

//以下为全局变量:
/
Hwnd:句柄
bmp_path:图文件目录
找图_intx
找图_inty
等图_intX
等图_intY
找多图_intX
找多图_intY
等多图_intX
等多图_intY
/

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...