Q语言找图整理之我的命令库《通用找图》源码之前台找图转后台坐标函数

'---------------------前台找图A---转后台坐标----------------------------------
Function 找图A(pictname)
// 前台找图,转后台坐标
FindPic client_X, client_Y, getclient_X(Hwnd1) + getwindow_X(Hwnd) - 1 - 1, getclient_Y(Hwnd1) + getwindow_Y(Hwnd) - 1, pic_path & pictname, 0.9, 找图_intX, 找图_intY
找图_intX = 找图_intX - client_X
找图_intY = 找图_intY - client_Y
If 找图_intx >= 0 and 找图_inty >= 0 Then
日志运行内容 = V_当前程序 & "A---------->找到图片:" & pictname & 找图_intX & "," & 找图_intY
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
找图A=1
Else
日志运行内容 = V_当前程序 & "A未找到图片:" & pictname
Call Lib.通用.输出日志(日志运行内容) : TracePrint 日志运行内容
找图A=0
End If
End Function
'-------------------------------------------------
Function 找图点击A(pictname, 偏移X, 偏移Y)
Dim 返回值
找图点击A=0
返回值= 找图A(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------------->点击图片:"&pictname
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
找图点击A = 1
End If
End Function
'-------------------------------------------------
Function 找多图A(pictname)
Dim I,返回值,图片
找多图A = 0
找多图_intX = -1
找多图_intY = -1
图片 = split(pictname, "|")
For i = 0 To ubound(图片)-1
返回值=找图A (图片(i))
If 返回值 > 0 Then
日志运行内容 = V_当前程序&"找到:第" & cstr(i + 1) & "张图片:" & 图片(i)
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
找多图_intX = 找图_intX
找多图_intY = 找图_intY
找多图A=i+1
Exit For
End If
日志运行内容 = "未找到第" & cstr(i + 1) & "张图片:"
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
Next
End Function
'-------------------------------------------------
Function 找多图点击A(pictname, 偏移X, 偏移Y)
Dim 返回值
找多图点击A=0
返回值= 找多图A(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------------->点击图片:"&pictname
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
找多图点击A =返回值
End If
End Function
'-------------------------------------------------
Function 等图A(pictname)
Dim 返回值
日志运行内容 = "B正在等待图片....:" & pictname
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
等图A=0
等图_intX = -1
等图_intY = -1
For 10000
返回值 = 找图A(pictname)
If 返回值 > 0 Then
日志运行内容 = V_当前程序&"A------------>等到图片:" & pictname
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
等图_intX = 找图_intX
等图_intY = 找图_intY
等图A=1
Exit For
End If
Delay 500
Next
End Function
'-------------------------------------------------
Function 等图点击A(pictname, 偏移X, 偏移Y)
Dim 返回值
日志运行内容 = "正在等待点击图片....:" & pictname
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
等图点击A = 0
等图_intX = -1
等图_intY = -1
For 100000
返回值 = 找图A(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_当前程序&"A---------------->点击图片:" & pictname
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
等图点击A=1
Exit For
End If
Delay 500
Next
End Function
'-------------------------------------------------
Function 等多图A(pictname)
Dim 返回值
等多图A=0
等多图_intX = -1
等多图_intY = -1
For 10000
返回值=找多图A(pictname)
If 返回值 > 0 Then
日志运行内容 = "等到多图片:" & 返回值
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
等多图A = 返回值
等多图_intX = 找多图_intX
等多图_intY = 找多图_intY
Exit For
End If
日志运行内容 = "遍历一次,未等到所有图片"
Call Lib.通用.输出日志(日志运行内容):TracePrint 日志运行内容
Delay 500
Next
End Function
'-------------------------------------------------

//注:Lib.通用.输出日志(日志运行内容) 此函数在 命令库 《通用》中 以下同
/*
Sub 输出日志(日志内容)
If V_输出运行日志 = 1 Then
Call Plugin.File.WriteFileEx(V_sPath & "脚本日志.txt", Now()& ": "&日志内容)//这边有加上执行该命令相应的系统时间
End If
End Sub

*/

//注:以下变量为全局变量
/
V_输出运行日志,定义是否输出日志文件
日志运行内容,日志内容
V_sPath,程序启动路径
pic_path,图文件路径
Hwnd,窗口句柄
Hwnd1,页面窗口句柄
client_X,窗口左上角坐标X
client_Y, 窗口左上角坐标Y
V_当前程序,//记录模块名的标识,便于日志输出,程序调试
/
//注:以下函数在 命令库 《通用》中 以下同 后续专题上传
/
getclient_X(Hwnd1) ,
getwindow_X(Hwnd) ,
getclient_Y(Hwnd1) ,
getwindow_Y(Hwnd),
/

猜你喜欢

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