qwe123qwe123 发表于 2020-4-16 17:20

按键精灵循环找图判断语句

区域找图:一个固定区域找多张图对比,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:50

本帖最后由 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:42

本帖最后由 z441511709 于 2020-4-16 17:51 编辑

楼上的方案就行了 如果你要精简代码 就用区域找多图 返回数组 分割数组 得到的坐标值>0就是存在 直接做动作就行

xiguazhi 发表于 2020-4-16 17:41

z441511709 发表于 2020-4-16 17:37

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:45

本帖最后由 z441511709 于 2020-4-16 17:49 编辑

xiguazhi 发表于 2020-4-16 17:41
把else if改成if
解析:在执行过程中,if语句执行后就直接跳过判断语句了,后边的else if是直接跳过的。所 ...
是可以 看错了 他要是找到第一张图片就点击第一的坐标 找到第二点击第二 是可行的 就是代码有点长

qwe123qwe123 发表于 2020-4-16 17:58

z441511709 发表于 2020-4-16 17:45
是可以 看错了 他要是找到第一张图片就点击第一的坐标 找到第二点击第二 是可行的 就是代码有点长

谢谢 我试试

qwe123qwe123 发表于 2020-4-16 17:59

xiguazhi 发表于 2020-4-16 17:41
把else if改成if
解析:在执行过程中,if语句执行后就直接跳过判断语句了,后边的else if是直接跳过的。所 ...

谢谢了我试试

ii23456ii 发表于 2020-4-16 18:12

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像素距离:怎么写代码,请指教。

qwe123qwe123 发表于 2020-4-16 18:15

xiguazhi 发表于 2020-4-16 17:41
把else if改成if
解析:在执行过程中,if语句执行后就直接跳过判断语句了,后边的else if是直接跳过的。所 ...

固定区域十张图, 只出一张,我要判断出的是哪一张,然后执行对应的操作,不需要每个操作都执行。
if语句能实现这种判断吗?

我是光光 发表于 2020-4-16 18:47

qwe123qwe123 发表于 2020-4-16 18:15
固定区域十张图, 只出一张,我要判断出的是哪一张,然后执行对应的操作,不需要每个操作都执行。
if语 ...

可以呀,看你这代码好像没有问题,是不是图片的相似度太高了呢?
页: [1] 2 3
查看完整版本: 按键精灵循环找图判断语句