按键精灵循环找图判断语句
区域找图:一个固定区域找多张图对比,10张图,找到图一执行A,找到图二执行B。if判断一直是找到图一,区域找图要怎么找多图判断?这是我弄的命令:
Call 循环找图()
Sub 循环找图
Do
FindPic 955,244,1001,282,"Attachment:\1.bmp", 0.8, 图一X, 图一Y
FindPic 955,244,1001,282,"Attachment:\2.bmp", 0.8, 图二X, 图二Y
FindPic 955,244,1001,282,"Attachment:\3.bmp", 0.8, 图三X, 图三Y
FindPic 955,244,1001,282,"Attachment:\4.bmp", 0.8, 图四X, 图四Y
FindPic 955,244,1001,282,"Attachment:\5.bmp", 0.8, 图五X, 图五Y
FindPic 955,244,1001,282,"Attachment:\6.bmp", 0.8, 图六X, 图六Y
FindPic 955,244,1001,282,"Attachment:\7.bmp", 0.8, 图七X, 图七Y
FindPic 955,244,1001,282,"Attachment:\8.bmp", 0.8, 图八X, 图八Y
FindPic 955,244,1001,282,"Attachment:\9.bmp", 0.8, 图九X, 图九Y
FindPic 955,244,1001,282,"Attachment:\0.bmp", 0.8, 图十X, 图十Y
If 图一X > 0 Then
MoveTo 463,407
LeftClick 1
Delay 500
ElseIf 图二X > 0 Then
MoveTo 500,408
LeftClick 1
Delay 500
ElseIf 图三X > 0 Then
MoveTo 535,408
LeftClick 1
Delay 500
ElseIf 图四X > 0 Then
MoveTo 570,408
LeftClick 1
Delay 500
ElseIf 图五X > 0 Then
MoveTo 606,410
LeftClick 1
Delay 500
ElseIf 图六X > 0 Then
MoveTo 639,407
LeftClick 1
Delay 500
ElseIf 图七X > 0 Then
MoveTo 676,406
LeftClick 1
Delay 500
ElseIf 图八X > 0 Then
MoveTo 708,408
LeftClick 1
Delay 500
ElseIf 图九X > 0 Then
MoveTo 743,407
LeftClick 1
Delay 500
ElseIf 图十X > 0 Then
MoveTo 429,407
LeftClick 1
Delay 500
End If
Loop
End Sub 本帖最后由 z441511709 于 2020-4-17 20:53 编辑
qwe123qwe123 发表于 2020-4-17 18:52
固定区域10选1,找到一张图,然后鼠标点击固定的坐标一次,20分钟一循环。
找到图一 执行MoveTo 463,4 ...
我给你的就行了啊把图放到数组里面 然后根据找到的图I的值就是图片的顺序 在根据I的变量去做选择的动作
Dim tu,i
tu = Array("图0", "图1", "图2", "图3", "图4", "图5", "图6", "图7", "图8", "图9")
Sub 子程序判断()
Select Case i
Case 0
MoveTo 463,407
LeftClick 1
Delay 500
Case 1
MoveTo 500,408
LeftClick 1
Delay 500
Case 2
MoveTo 535,408
LeftClick 1
Delay 500
Case 3
MoveTo 570,408
LeftClick 1
Delay 500
Case 4
MoveTo 606,410
LeftClick 1
Delay 500
Case 5
MoveTo 639,407
LeftClick 1
Delay 500
Case 6
MoveTo 676,406
LeftClick 1
Delay 500
Case 7
MoveTo 708,408
LeftClick 1
Delay 500
Case 8
MoveTo 743,407
LeftClick 1
Delay 500
Case 9
MoveTo 429,407
LeftClick 1
Delay 500
End Select
End Sub
Do //开始找图。
i = 0
Do
FindPic 0,0,1024,768,"Attachment:\"&tu(i)&".bmp",0.5,intX,intY
If intX > 0 And intY > 0 Then
TracePrint "找到图" & i & "。"
Delay 60
Call 子程序判断()
Else
TracePrint "没有找到图"&i&"。"
End If
i = i + 1
Loop Until i = 10
Delay 100
TracePrint "进入下一轮找图。"
Loop
本帖最后由 z441511709 于 2020-4-16 17:51 编辑
楼上的方案就行了 如果你要精简代码 就用区域找多图 返回数组 分割数组 得到的坐标值>0就是存在 直接做动作就行 iCoord = Plugin.Bkgnd.FindMultiPic(Hwnd,0,0,1024,768,"C:\图片.bmp",0, 1.0)
XY = Split(iCoord,"|")
TracePrint XY(0)
TracePrint XY(1)
//可以多个图片路径("C:\图片.bmp|D:\图片.bmp"),或者只要第一个有路径后面都跟随("D:\图片1.bmp|图片2.bmp")。
//查找方向:
//0: 从左到右,从上到下
//1: 从左到右,从下到上
//2: 从右到左,从上到下
//3: 从右到左,从下到上
//失败返回:-1|-1 本帖最后由 z441511709 于 2020-4-16 17:49 编辑
xiguazhi 发表于 2020-4-16 17:41
把else if改成if
解析:在执行过程中,if语句执行后就直接跳过判断语句了,后边的else if是直接跳过的。所 ...
是可以 看错了 他要是找到第一张图片就点击第一的坐标 找到第二点击第二 是可行的 就是代码有点长 z441511709 发表于 2020-4-16 17:45
是可以 看错了 他要是找到第一张图片就点击第一的坐标 找到第二点击第二 是可行的 就是代码有点长
谢谢 我试试 xiguazhi 发表于 2020-4-16 17:41
把else if改成if
解析:在执行过程中,if语句执行后就直接跳过判断语句了,后边的else if是直接跳过的。所 ...
谢谢了我试试 z441511709 发表于 2020-4-16 17:37
iCoord = Plugin.Bkgnd.FindMultiPic(Hwnd,0,0,1024,768,"C:\图片.bmp",0, 1.0)
XY = Split(iCoord,"|") ...
iCoord = Plugin.Bkgnd.FindMultiPic(Hwnd,0,0,1024,768,"C:\图片.bmp",0, 1.0)
XY = Split(iCoord,"|")
TracePrint XY(0)
TracePrint XY(1)
请教,返回结果怎么运用?假设找到第一个图的坐标后,要执行以下操作:
第一种要鼠标点击:是Leftclick()还是Leftclick(XY(0))?昨天刚看,不懂,请指教。
第二要鼠标向右拖动500像素距离:怎么写代码,请指教。 xiguazhi 发表于 2020-4-16 17:41
把else if改成if
解析:在执行过程中,if语句执行后就直接跳过判断语句了,后边的else if是直接跳过的。所 ...
固定区域十张图, 只出一张,我要判断出的是哪一张,然后执行对应的操作,不需要每个操作都执行。
if语句能实现这种判断吗? qwe123qwe123 发表于 2020-4-16 18:15
固定区域十张图, 只出一张,我要判断出的是哪一张,然后执行对应的操作,不需要每个操作都执行。
if语 ...
可以呀,看你这代码好像没有问题,是不是图片的相似度太高了呢?