按键精灵 突破找图限制的方法
作者:361度 出处:兄弟论坛 更新时间:2007-11-01 责任编辑:liuhao
 
 

按键精灵的找图功能只能输出找到的第一个图的坐标,如何让它找输出找图范围内所有符合的图片坐标呢?我有2个方案: 

一、把找图的范围设定成和图片一样大,然后把这个范围的框以一个次移一个像素的方式,移遍整个找图范围,每移一次就找一次图。

二、想办法让找图的命令在找到第一个图后继续找下去。

我首先试的是第一个方案,本以为它会运行得很快,但运行的速度让我难以忍受。以它的速度,扫完全屏要几个小时,运行了一会儿我就把它关了。分析了下运行慢的原因:

1、每次找图都要重新分析图片,这个找图方案运行找图功能的次数太多,导致分析图片用了过多的时间;

2、由于这是脚本,不是exe文件,每执行一条命令都需要先读一条语句,翻译后再执行,这个方案写的脚本虽然不长,但运行的时候要执行循环很多次才能扫遍整个找图范围。

所以,最后采用的是第二方案,详细的时候方法是:程序找到一个图后,找图范围的上边界就重新设为该图坐标的纵坐标加1,然后继续找图。参考脚本如下:

VBS y0=0
VBS Dim x(),y()
//找到的图片横坐标和纵坐标分别存在x()数组和y()数组中
VBS i=0
//找到的图片数量存在变量i中
VBS pd=1
VBSCall FindPic(0,y0,1024,768,"发.bmp",1,xz,yz)
If xz<0 or yz<0
MessageBox "没找到图形"
EndScript
EndIf
//7到11行可以不要
While pd=1
VBSCall FindPic(0,y0,1024,768,"发.bmp",1,xz,yz)
If xz>=0 and yz>=0
VBS ReDim Preserve x(i)
VBS ReDim Preserve y(i)
VBS x(i)=xz
VBS y(i)=yz
VBS i=i+1
VBS y0=yz+1
Else
VBS pd=0
EndIf
EndWhile
//下面的命令是用于显示找图结果
VBSCall RunApp("notepad.exe")
Delay 1000
VBS n=0
While n<i
SayString x(n)
SayString ","
SayString y(n)
SayString "|"
VBS n=n+1
EndWhile
SayString i

此脚本是找图范围是0,0,1024,768时的找图脚本,找图范围不同时要改动部分参数。

此脚本的优点是找图速度快,但有死区,表现在找不到和已找到的图右侧完全并排的图。由于该程序的死区范围很小,所以对所找的图在屏幕内并排的可能性很小时,可以采用。

 
     
 
 
继续>>下一页
[第1页][第2页][第3页][下一页]
 
内容导航  
第1页按键精灵 突破找图限制.. 第2页按键精灵 突破找图限制..
第3页按键精灵
上一篇 : 黄山IE解答:6、恶意地址.. 下一篇黄山IE修复专家简体--繁..
 
  您要为所发表的言论的后果负责,请各位遵纪守法并注意文明用语
标题:  

[ 关于本站 ] [ 广告服务 ] [ 商务合作 ] [ 联系我们 ] [ 合作伙伴 ] [ 法律顾问 ] [ 网站地图 ]
千橡公司 京ICP证041489号 Copyright (c) 1997-2007 All Right Reserved.