找回密码
 加入
搜索
查看: 2753|回复: 6

[AU3基础] 继续请教阿福找图的几个问题。。。

  [复制链接]
发表于 2016-3-4 19:13:24 | 显示全部楼层 |阅读模式
1、我这段代码,是在找到1.bmp后,然后点击偏移位置,单这个步骤没有问题,第二段操作是没有生效的,为什么呢?
#include<af_search_pic.au3>
Sleep(6000)
search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\1.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置属性
  Sleep(500)
EndIf

Sleep(1500)
search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\4.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置,选择Debug还是Release
EndIf
2、第二个问题是阿福找图函数会生成一个Source.bmp的图在脚本目录下,我想把它放到C:\Temp,或者Windows的%Temp%里,我这样改,似乎连第一步都无法工作了,没那么简单?






3、第三个问题,如图,假设找图已经黄色箭头所在的位置x,y,而下一步是想点击红色框所在的下拉箭头,那么偏移量是多少,有没有什么工具可以“测量”这个位置相对到黄色箭头的x,y偏移多少?
我也曾想过让脚本再找一次红框所在的箭头图,似乎用已找到的坐标再去偏移x,y的思路来的快?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-3-5 22:15:06 | 显示全部楼层
本帖最后由 love008 于 2016-3-5 22:26 编辑

1、用法是没有错误的,你应该学会用ConsoleWrite来调试,看$array[0],$array[1]是否取得坐标值,如果取得,就要找MouseClick语句是否适合你的操作,这个需要你调试,你要学会单步调试,找问题。MouseClick的成功率要注意。
2.Source.bmp的生成目录当然可以是任意的,你的改法没有问题,找其它原因。甚至可改写代码,运行完后删除source. bmp.
3.方法是有许多,autoit v3 windows info就可以直接获取。还可以MouseGetPos获取。
 楼主| 发表于 2016-3-7 11:01:25 | 显示全部楼层
谢谢,已经在用ConsoleWrite来输出调试了。。。
现在做到这一步,看样子是有问题,这是我的代码:
#include<af_search_pic.au3>
;~ Opt("TrayIconDebug", 1)
Sleep(6000)
search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\1.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  ConsoleWrite(@CRLF & "1.bmp array0 is " & $array[0] & @CRLF & @CRLF)
  ConsoleWrite(@CRLF & "1.bmp array1 is " & $array[1] & @CRLF & @CRLF)
  MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置属性
  EndIf

search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\4.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  ConsoleWrite(@CRLF & "4.bmp array0 is " & $array[0] & @CRLF & @CRLF)
  ConsoleWrite(@CRLF & "4.bmp array1 is " & $array[1] & @CRLF & @CRLF)
  MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置,选择Debug还是Release
EndIf
这是输出:
>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\lwk\Desktop\autit\MakeProject\configproject.au3" /UserParams    
+>10:57:59 启动 AutoIt3Wrapper v15.920.938.0 SciTE v3.6.0.0  键盘:00000804  操作系统:WIN_7/Service Pack 1  CPU:X64  系统架构:X64  语言环境:0804
+> SciTE 目录 => C:\Program Files (x86)\AutoIt3\SciTE  AutoIt3Wrapper 用户目录 => C:\Users\lwk\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE 用户目录 => C:\Users\lwk\AppData\Local\AutoIt v3\SciTE 
>运行 AU3Check (3.3.14.2) 检查代码.  参数: C:\Program Files (x86)\AutoIt3  au3 文件: C:\Users\lwk\Desktop\autit\MakeProject\configproject.au3
+>10:57:59 AU3Check 语法检查结束.rc: 0
>运行:C:\Program Files (x86)\AutoIt3\autoit3_x64.exe(3.3.14.2), 脚本: C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "C:\Users\lwk\Desktop\autit\MakeProject\configproject.au3"    
--> 点击 Ctrl+Alt+Break 重新启动, 或 Ctrl+Break 停止脚本执行

1.bmp array0 is 198


1.bmp array1 is 159

+>10:58:06 AutoIt3.exe 结束.rc: 0
+>10:58:06 AutoIt3Wrapper 完成脚本处理.
>Exit code: 0    Time: 7.553
很明显第二次找图的步骤没有运行,我也反复做过几次代码的调整,似乎整个au3在第一步找图找完后,就退出了。。。。
不知道是什么原因呢?
发表于 2016-3-7 13:58:10 | 显示全部楼层
你把第9行注释运行看看。
 楼主| 发表于 2016-3-7 14:44:24 | 显示全部楼层
此次测试代码:
#include<af_search_pic.au3>
;~ Opt("TrayIconDebug", 1)
Sleep(6000)
search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\1.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  ConsoleWrite(@CRLF & "1.bmp array0 is " & $array[0] & @CRLF & @CRLF)
  ConsoleWrite(@CRLF & "1.bmp array1 is " & $array[1] & @CRLF & @CRLF)
  ;MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置属性
  EndIf

search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\4.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  ConsoleWrite(@CRLF & "4.bmp array0 is " & $array[0] & @CRLF & @CRLF)
  ConsoleWrite(@CRLF & "4.bmp array1 is " & $array[1] & @CRLF & @CRLF)
  MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置,选择Debug还是Release
EndIf
我分了2个步骤继续去调试:
1、先把第九行注释了,运行的结果是只有1.bmp的调试输出:
1.bmp array0 is 198
1.bmp array1 is 159
输出窗口内容后面,就没有显示有4.bmp的0和1的输出了。

2、我把整个第一步骤都注释了:
#include<af_search_pic.au3>
;~ Opt("TrayIconDebug", 1)
Sleep(6000)
;~ search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\1.bmp")
;~ If $aPosMsg<>"" Then
;~   $array=StringSplit ($aPosMsg,",",2)
;~   ConsoleWrite(@CRLF & "1.bmp array0 is " & $array[0] & @CRLF & @CRLF)
;~   ConsoleWrite(@CRLF & "1.bmp array1 is " & $array[1] & @CRLF & @CRLF)
;~   MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置属性
;~ EndIf

search_pic (0,0, @DesktopWidth, @DesktopHeight,@ScriptDir & "\4.bmp")
If $aPosMsg<>"" Then
  $array=StringSplit ($aPosMsg,",",2)
  ConsoleWrite(@CRLF & "4.bmp array0 is " & $array[0] & @CRLF & @CRLF)
  ConsoleWrite(@CRLF & "4.bmp array1 is " & $array[1] & @CRLF & @CRLF)
  MouseClick("left",$array[0]+20,$array[1]+10,"2") ;点击配置,选择Debug还是Release
EndIf
运行输出非常妖异:
>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\lwk\Desktop\autit\MakeProject\configproject.au3" /UserParams    
+>14:38:27 启动 AutoIt3Wrapper v15.920.938.0 SciTE v3.6.0.0  键盘:00000804  操作系统:WIN_7/Service Pack 1  CPU:X64  系统架构:X64  语言环境:0804
+> SciTE 目录 => C:\Program Files (x86)\AutoIt3\SciTE  AutoIt3Wrapper 用户目录 => C:\Users\lwk\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE 用户目录 => C:\Users\lwk\AppData\Local\AutoIt v3\SciTE 
>运行 AU3Check (3.3.14.2) 检查代码.  参数: C:\Program Files (x86)\AutoIt3  au3 文件: C:\Users\lwk\Desktop\autit\MakeProject\configproject.au3
+>14:38:27 AU3Check 语法检查结束.rc: 0
>运行:C:\Program Files (x86)\AutoIt3\autoit3_x64.exe(3.3.14.2), 脚本: C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "C:\Users\lwk\Desktop\autit\MakeProject\configproject.au3"    
--> 点击 Ctrl+Alt+Break 重新启动, 或 Ctrl+Break 停止脚本执行
+>14:38:33 AutoIt3.exe 结束.rc: 0
+>14:38:33 AutoIt3Wrapper 完成脚本处理.
>Exit code: 0    Time: 6.787
似乎什么事情都没有发生过,我反复确认过4.bmp是很正常的截图,没有变化过的24位图,肯定界面上是会有的。
脚本目录下面的Source.bmp也是截图成功的


以前也在其它平台上写过很简单的代码的,见到编译器这样无视代码也是不得其解。。。。。
发表于 2016-3-7 18:36:21 | 显示全部楼层
本帖最后由 love008 于 2016-3-8 08:58 编辑

总会找到原因,你要找图的软件哪里可以下载?安装试试。执行还是用了6.7秒,说明程序还是运行了的。
 楼主| 发表于 2016-3-8 11:15:53 | 显示全部楼层
终于搞定了,我重新再做了2.bmp,这次能有动作了,我想的原因是因为WIN7的areo太透明了,截图截得不好影响了判断......
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 02:15 , Processed in 0.116208 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表