按键精灵找字找不到图,单独找一张图基本上不会出现找不到的情况,但是放到程序里失败率就很高,怎么解决?

关于按键精灵找图功能失效的原因~【原创】
昨天在台式机做好了一个小网游的外挂,同时接到两个订单。于是移植到笔记本上准备用来挂机
其中的Visual Basic 的找图功能死活不能实现。什么方法都试了,后台进程全kill,杀毒,防火墙全shut down
网上搜解决方法,大多说的是什么精确度设置太高啦,什么图放的路径不对啦~
(这不扯淡么,我台式机能用,为毛笔记本不能用了,回答问题的人都把别人想的那么弱智)
高端点的解释,还说什么显卡问题,换个驱动试试。
(这个哥很清楚,所以换到笔记本把所有图库都改了,毕竟显卡不一样出的图可能有差异)
我的VAIO本子是双显卡可切换的,开始用的是intel的集成显卡,我想着,是不是切换成N卡就好了。
试了之后依然不行。换驱动那个不靠谱,就没试。
自己想了想,是不是因为自己机器上不支持VB啊,少什么组件。
于是下载了VB,装完之后依然没起色,去微软下了windows的vb补丁,还是不行。泪奔了~
今天下午又接到一个大订单,为期一周。这下不行了,再不搞定笔记本,难道要去网吧包机?那就没利润了。于是接着想办法,查资料。
最后发现,VB 里的找图功能,只能找24位色的图。我的本本,调在一直开着电源模式,默认32bit 我个人截图习惯是截bmp位图,但求无损,vb找图函数里相似度赋值向来是说1绝不0.9的。于是就是这个原因,华丽丽的悲剧了。
我们知道电脑里显示颜色分为 R(红) G(绿) B(蓝)三种颜色,24位色就是将这三种颜色,各自分为256个深度,可以用两个16进制数来表示&ff ff ff就是纯白 00 00 00就是纯黑
00 ff ff之类的就是纯色。在某些系统和显卡之下32位色就会导致无法识别了。解决方案,很简单,桌面右键--属性--设置--颜色质量--32位换为16位
bingo~满怀着期待,我打开了按键精灵和游戏,按下了运行快捷键~
&滴~的一声响,按键精灵终于按照我之前的设置,飞速的找图,找怪,打怪,吃药咯~~
分享这篇日志的人也喜欢
想我不哈哈
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场按键精灵找图秘籍
  经常在里看到有人发找图求助的帖子,所以特意写了此篇文章(可能算不上文章)。  虽然我以前有抓图的经验,但为了写篇像样的文章,特意做了不少实验。  首先要强调的是设置找图参数问题(不是刚学抓图的人,这点可以不用看)。下面是找图的语句  VBSCall Call FindPic(left,top,right,bottom,filename,similar,x,y)  left处填写找图区域的左边界,top处填写找图区域的上边界,right处填写找图区域的右边界,bottom处填写找图区域的下边界。  设置的找图区域不要出屏幕范围,否则可能会出错(我也不太确定^_^)。如果屏幕分辨率是,那屏幕范围是0,0,;如果如果屏幕分辨率是800&600,那屏幕范围是0,0,799,599。因为屏幕坐标是从0开始算的,不是从1开始算的,所以右边界和下边界的值要减1。曾经看到有人找图范围设置成0,0,800,600,就超出了屏幕范围。  filename处填图片文件名的路径,也可以只填文件名,这时墨认图片文件的路径是在script文件夹下,图片文件要是BMP格式的,JPG格式估计不行(没试过^_^),失真大。  similar处填图片的相似度,取值在0.5到1之间(我曾经试过取2,测试结果忘了-_-! 别砸我),取的值越大,相似度越高,找图的速度也越快(这是别人说的)。虽然按键精灵的作者推荐取0.9,但只要图不是透明的,背景设置正确(这是这篇文章的重点),设成1都能找到(再同一台电脑上肯定没问题,换台电脑就不知道了)。  x处填保存找到的图片的横坐标的变量,y处填保存找到的图片的纵坐标的变量。这程序返回的是找到的图片的左上角的坐标。当程序找不到符合的图片时,这2个变量都被置-1。这里要注意,如果脚本中用的位置来指示找到的图片,如果没有考虑到找不到符号图片的问题,当找不到符合的图片时,虽然鼠标不能移到坐标(-1,-1)处,但鼠标会移到屏幕左上角,也就是坐标(0,0)处。  下面就是这篇文章的重点:(如何处理图片背景)  对于不透明的图片,只要图片的背景处理得正确,找图的成功率是很高的。只要你要找的图不是透明的,且完整地显示再屏幕上,找图的成功率基本是100%(目前还没遇到过意外,为了防止出现意外,这里加了个基本。不过这也不能保证安全,因为我的一个老师写的书也是怕遇到特殊情况,加了个基本上去,被人挑了刺-_-!)。  首先来纠正下部分人的错误观点:  1、白色是程序默认的透明色(注意这里说的是错误观点,大家别弄反了)  任何颜色都可以是背景色,只要程序认定了哪种颜色是背景色,哪种颜色就是透明色(有图为证,见这篇文章所附的图中图16,当桌面上有全蓝图片时,这语句就找不到合适的图片,原因是此图中有块白色区域)。所以这个语句也可以找纯白的图片。  2、(还没想到,等我想到了再补上^_^)  现在开始说处理图片背景的问题:  同一图片的背景色要为同一种颜色(为了防止遇到笨蛋,特加上这句,知道和不知道这点的人都别砸我,现在写篇文章不容易啊,要考虑到不同层次的人)。处理图片背景的时候一定要认真,要把图片设置成最大(我是用画图处理的,放大率调成8倍,还设置成有网格),一定要把原图片的背景都改成同一种,最好是要找的东西的图片上没有的颜色,改的时候一个像素都别漏,一个像素都会决定你的成败。  下面是这篇文章的核心部分&&程序如何判断背景色  毕竟电脑不是人,没那么聪明,人不要人教就能判断背景色,而且十分准确。要是程序判断背景色错误,就不能对图片进行准确的识别,所以知道程序判断背景色的方法是非常重要的,既然程序不能适应我们,那我们就去适应它(这程序没救了,还要我们去适应它,一点人性化都没有-_-!)。对按键精灵如何判断背景色,我有3种猜测:  1、以图片四个角的颜色做为背景色;  2、以图片中所占像素最多的颜色作为背景色;  3、采用前面2种方法进行综合判断。  其中第一种方法最容易实现,采用的可能行最大。  为了证明我的猜测我做了很多试验(顺便说下闲话,为什么叫试验呢,而不叫实验,我的老师说:&试验是先前不知道结果的,试是测试下的意思;实验是先前知道结果的,实是实践的意思。&早就知道的人别向我扔鸡蛋,是我以前分不清,我就以为你们也分不清。这里可是真正的试验哦,不是实验。那些科学家做的也是试验,我做的是和他们一个等级的,我又在吹牛了^_^),下面的是实验时所使用的脚本:  VBSCall FindPic(0,0,,&测试。bmp&,1,x,y)  If x&=0 and y&=0  MoveTo x,y  Else  VBSCall MessageBox(&没找到图片&)  EndIf  我的系统设置为32位色,屏幕分辨率是,其他的就不说了,和这次测试没关系,这也是个人隐私嘛!  试验时&测试。bmp&文件放在了script文件夹里(这样就不用写路径了,偷下懒)。  这次试验时所用过的&测试。bmp&图片如图&测试&所示(这论坛里图片和文字怎么不能交替地放-_-!)。图&测试&里的图是在画笔里放大8倍后再加网格的结果,每一格就是一个像素,其实那些图片是很小的。测试结果如图&结果&。测试时是用画笔的调色板做为被找的图片。细心的人也许会发现有些&测试&的图片在&结果&里找不到结果,下面来解释下,这里有3种图片在&结果&里是找不到的,一是没必要用图片来表达试验结果的图片,它们结果是弹出个对话框,显示&没找到图片&,这样的试验图片有在图&测试&里的图16和19;第二种是无法用局部图片来表达试验结果的试验,它们的试验结果是鼠标移到了屏幕的左上角,屏幕坐标(0,0)处,这样的试验图片有图&测试&里的图7,9;第三种是不是用来做试验的,是用来给你们看下我处理图片背景的过程,这样的图片有在&测试&里的图18、19、20。  图&测试&里的图1到图9证明了,该程序是优先采用如果图片4个角的颜色相同时,侧取4个角的颜色作为背景色。四个角的颜色不相同时是采用什么方法来识别背景色的就不清楚了。但知道&优先采用如果图片4个角的颜色相同时,侧取4个角的颜色作为背景色。&这点就已经足够了,要想让程序知道什么是背景色,把图片的四个角都填成背景色就可以了。实践的例子如图&测试&里的图18,19,20。图19是把抓来的图片里的原图&&图18的背景色都处理成相同的颜色,然后找原图就会弹出&没找到图片&的对话框。原因就是图19里的右下角的颜色和其它3个角的颜色不相同,程序识别背景色错误。此时,把图19的右下角的颜色改成和其它3个角的颜色相同,如图20,再找原图就成功了。  图&测试&里的图7和图9就奇怪了,为什么鼠标会移动屏幕坐标(0,0)处,却没弹出&没找到图片&的对话框,这说明此时城乡返回的坐标是(0,0)。为什么会这样?请按键精灵的作者来解释下。不过大家不用当心,处理背景色的时候4个角都取背景色就不会出现这种情况了。  图&结果&里的第4个和第5个图有人或许会觉得奇怪,鼠标指的不是图片的左上角,而是指到图片外面去了。那是因为测试图片的上面几行和左边几行被系统认为是背景色,也就是作为透明的来处理,透明的就是那些地方是任何颜色都可以,所以调色板里的那些蓝色色块左上角外面的也符合要求。所以鼠标指的还是被找图片的左上角。不信看看图&测试&里的图10和图11的测试结果。  图&结果&里的第2个图大家也不要以为实验出来的结果是找到鼠标所指向的颜色的图片,其实也是蓝色,原因和前面的一样。  图&测试&里的图12是用来测试被其他颜色包围的背景色是不是也被程序认为是透明的,试验结果证明这种情况也被程序认为是透明的。  文章写到这里就基本结束了(一不小心就写了这么多-_-!,让大家看得辛苦了),高手看到这里或许失望了,估计这些你早就知道了(这句不是写给按键精灵的作者看的。要是按键精灵的作者来看了,请继续看后面的,后面有要对你说的话。),但你既然来了,就顺便帮我找找错误,或者补充下我写的东西。  既然我是为了给按键精灵的作者找茬才来这个论坛注册,那就继续给他找茬,省得浪费了我的注册这个论坛会员的时间。按键精灵的作者请看下面:  我对这次的实验的感受啊,要我怎么跟你说呢?你那条找图语句里怎么就不能多加2个输入参数呢?一个是是否使用背景,一个是背景的颜色,或者是背景色在图片中的坐标(让程序在该图中遇到与该点处的颜色相同的像素的就认为是背景),个人认为这里的第2种方法比较好,因为用第1种方法有个缺点:如果这程序在设置为32位色的电脑上能运行通过,那在在设置为16位色的电脑上就不能准确识别背景色。这样大家都明白,你写程序也简单啊。而程序像现在这样,你写判断背景色的部分麻烦,别人又不知道你是如何判断背景色的,弄得找图失败都不知道原因。当然,既然我写了这篇文章你也不用改程序了。^_^  转贴本人的文章请注明原作者和出处(估计没人会转贴这篇文章,写得不好,别人看着都累)。本人一般不会转贴别人的文章(虽然版主允许靠转贴得精),最多给你个链接让你自己去看。毕竟写文章是辛苦的,而转篇文章却只要几秒钟。&&&&
相关软件:
大小:472.98 MB
授权:免费
大小:18.86 MB
授权:免费只需一步,快速开始
后使用快捷导航没有帐号?
查看: 11627|回复: 9
本帖最后由 极品小猫 于
02:02 编辑
第一次执行脚本时, 能够找到图, 并执行操作, 可是在接下来的第二次找图, 却找不到, 停止脚本重新执行, 却又可以. 什么情况?
下面是脚本
-- 适用屏幕参数
SCREEN_RESOLUTION=&480x854&;
SCREEN_COLOR_BITS=32;
& &
function click(intX,intY)& && & --点击函数
& & touchDown(0, intX, intY);
& & mSleep(100);
& & touchUp(0);
end
-- 主入口
function main()
& & X_TZ,Y_TZ = findImage(&/sdcard/Touchelper/BMP/SJCQ_OL/ZYCM_TZ.bmp&);& & --自动挑战
& & if X_TZ ~= -1 and Y_TZ ~= -1 then
& && &&&notifyMessage(&挑战&);
& && &&&click( X_TZ , Y_TZ );
& && &&&mSleep(3000);& && & --延时3秒进行攻击操作
& && &&&click( X_TZ , Y_TZ);&&--进行攻击
& && &&&mSleep(15000 );& && &-- 战斗画面
& & else
& && &&&intX,intY = findImage(&/sdcard/Touchelper/BMP/SJCQ_OL/ZYCM_QD.bmp&);& & --战斗结束确定信息循环
& && &&&if intX ~= -1 and intY ~= -1 then
& && && && &notifyMessage(&确定&);
& && && && &click(intX, intY);&&--第一次确定
& && && && &mSleep(5000);
& && && && &click(intX, intY);&&--第二次确定
& && && && &mSleep(5000);
& && &&&else
& && && && &intX,intY = findImage(&/sdcard/Touchelper/BMP/SJCQ_OL/ZYCM_TZ2.bmp&);& && && &&&--当挑战按钮变为灰色时进入下一组
& && && && &if intX ~= -1 and intY ~= -1 then
& && && && && & intX,intY = findImage(&/sdcard/Touchelper/BMP/SJCQ_OL/ZYCM_XYZ.bmp&);& && & --进入下一组
& && && && && & if intX ~= -1 and intY ~= -1 then
& && && && && && &&&notifyMessage(&下一组&);
& && && && && && &&&click(intX, intY);
& && && && && && &&&mSleep(3000);
& && && && && & end
& && && && &end
& && &&&end
& && &&&notifyMessage(X_TZ);
& & end
& & mSleep(3000);
end
复制代码
你现在的流程是 如果是自动挑战那么就开始攻击 否则(如果是战斗结束,那么就点击确定,否则(如果战斗结束,那么就进入下一组))) 结束。
所以说如果自动挑战判断成立的话就不会执行战斗结束点击确定,更不会执行进入下一组。
你可以设置循环播放脚本,别只执行一次。
对了。。找图的事。。。我总觉得全屏找图不太准确。还是用模糊找图感觉能准点
Re:1. 流程基本没有问题(我有用BlueStacks来玩这个游戏, 所以也有用按键精灵来做这个脚本)
Re:2. 是循环执行脚本, 非执行一次. 战斗分组进行.
一组5轮, 第五轮结束方可进入下一组.
在第一轮战斗从开始到结束(即点确定之后), 在第二轮已经无法找到挑战按钮.
此时最后执行的信息提示结果为 -1.
Re:3. 这个问题不大, 因为停止重新执行, 是可以找到图的. 这一次已经不存在路径问题. 每个操作单独执行都是有效的. 问题的重点是, 第一轮战斗结束后再次去找挑战按钮, 硬是找不到. 但是停止重新执行, 却没问题. 所以不知道是不是脚本哪里有问题, 还是说软件的BUG.
极品小猫 发表于
Re:1. 流程基本没有问题(我有用BlueStacks来玩这个游戏, 所以也有用按键精灵来做这个脚本)
Re:2. 是循环执 ...
應該是BUG= =,
我找色用單次循環然後同樣的複製貼上加個延遲而已,
第2次就找不到了....看來還有很常的路要走@@
shodomai 发表于
應該是BUG= =,
我找色用單次循環然後同樣的複製貼上加個延遲而已,
第2次就找不到了....看來還有很常的路 ...
后来经研究, 加了一处延时就好了.
不知道程序是否在循环找图上是否存在次数上限或者缓存上的问题.
不知是否是因为第一轮执行结束之后, 由于延迟时间不足, 导致循环重复找图过于密集产生.
极品小猫 发表于
后来经研究, 加了一处延时就好了.
不知道程序是否在循环找图上是否存在次数上限或者缓存上的问题.
不知是 ...
是喔,你延時加多久? 我之前用3秒是沒法找到的..
shodomai 发表于
是喔,你延時加多久? 我之前用3秒是沒法找到的..
建议在循环结束前加一处3秒, 然后在各个操作上加入适当的延时
学习了,技术贴!!!
Powered by求大神帮忙加个判断当循环找图一定时间内找不到图时返回上一步脚本 _ 会员专区 - 按键精灵论坛
腾讯微博:
软件版本:2014.05软件大小:21.6M更新时间:07-04
软件版本:3.2.9软件大小:62.5M更新时间:12-07
软件版本:1.3.1软件大小:29.2M更新时间:09-29
软件版本:1.1.0软件大小:12.3M更新时间:12-29
查看: 923|回复: 5
按键会员(月)按键会员绑定账号后自动赠送
小弟初学按键以下是我整的一个微信扫一扫加好友的脚本,但运行时有时由于网速或模拟器反应慢的问题,会出现单击的左键并没有单击成功而导致后面循环找图的脚本找不到想要的图 烦请大神们帮做一个判断。
比如 :当脚本点击微信里面的添加后下一步应该是循环找图扫一扫并点击,但有时微信卡住了脚本点击微信右上角的“十”号并不会出现扫一扫的图标,而这时脚本会卡在这个找扫一扫这里,我现在就是想要大神帮指点下看能不能在每次左键点击后做个判断是否有点击成功,或着当循环找图找不到时返回上一个找图命令DoFindPic 0,0,,&Attachment:\微信.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then Exit DoEnd IfDelay 100loopMoveTo intx, intyDelay 100LeftClick 1Delay 4000DoFindPic 0,0,,&Attachment:\添加.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then Exit DoEnd IfDelay 100LoopMoveTo intx, intyDelay 100LeftClick 1Delay 300DoFindPic 0,0,,&Attachment:\扫一扫.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then Exit DoEnd IfDelay 100LoopMoveTo intx, intyDelay 100LeftClick 1Delay 300
附件:您需要才可以下载或查看附件。没有帐号?
按键精灵开发者4级可通过提升认证等级来升级勋章:
要不你用个goto标记rem 标记DoFindPic 0,0,,&Attachment:\微信.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then Exit DoEnd IfDelay 100loopMoveTo intx, intyDelay 100LeftClick 1Delay 4000DoFindPic 0,0,,&Attachment:\添加.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then Exit DoEnd IfDelay 100LoopMoveTo intx, intyDelay 100LeftClick 1Delay 300DoFindPic 0,0,,&Attachment:\扫一扫.bmp&,0.9,intX,intYIf intX & 0 And intY & 0 Then Exit Doelsegoto 标记End IfDelay 100LoopMoveTo intx, intyDelay 100LeftClick 1Delay 300
按键精灵开发者4级可通过提升认证等级来升级勋章:
我又修改了一下你看看,最好不要用gotoi=0While i=0
FindPic 0,0,,&Attachment:\微信.bmp&,0.9,intX,intY
If intX & 0 And intY & 0 Then
MoveTo intx, inty
LeftClick 1
Delay 4000
FindPic 0,0,,&Attachment:\添加.bmp&,0.9,intX,intY
If intX & 0 And intY & 0 Then
MoveTo intx, inty
LeftClick 1
FindPic 0,0,,&Attachment:\扫一扫.bmp&,0.9,intX,intY
If intX & 0 And intY & 0 Then
LoopWend MoveTo intx, intyDelay 100LeftClick 1Delay 300
按 键 工 程 师·兼 职
按键X开拓者勋章最先体验按键精灵X,且提交有效反馈的奖励勋章过大年勋章俩小福娃给大家拜年啦!双十一绝版纪念勋章双十一绝版纪念勋章抗战胜利70周年勋章抗战胜利70周年活动的专属勋章单身汪勋章单身贵族的专属勋章按键14周年庆纪念勋章按键14周年庆纪念勋章(360天)按键学院按键学院专属勋章,按键学院学员或文章被院刊收入可领取幸运草勋章(永久)商业小精灵限时活动勋章。马年勋章(360天) 马年纪念勋章(360天)月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。鹰眼勋章鹰眼注册用户专属勋章黄瓜勋章(永久)体验商业小精灵活动的奖励天使勋章天使一样的用户按键明星按键明星勋章黄金之翼黄金之翼勋章举报达人长期举报不良帖子活动狂人论坛活动狂人骨灰级按键用户3年以上的按键论坛用户按键精灵开发者6级可通过提升认证等级来升级勋章:龙年勋章(360天)龙年纪念勋章(360天)十周年勋章(360天)十周年纪念勋章兔年勋章(360天)兔年纪念勋章(360天)论坛GG按键论坛男性用户勋章发帖高手鼓励积极回复,但注意不要灌水哦爱心大使积极帮助新手(可向管理员进行申请)学有所成学有所成勋章,新手步入按键学堂的第一枚勋章实习版主按键论坛的实习版主专属勋章按键元老资深按键用户的尊贵荣誉勋章管理人员按键论坛的管理团队专属勋章
回复 Do'循环找多图 找到哪个操作哪个
FindPic 0,0,,&Attachment:\微信.bmp&,0.9,intX,intY
If intX & 0 And intY & 0 Then
MoveTo intx, inty
LeftClick 1
Delay 4000
Delay 1000'给一定的操作后反应时间 避免做无用功
FindPic 0,0,,&Attachment:\添加.bmp&,0.9,intX,intY
If intX & 0 And intY & 0 Then
MoveTo intx, inty
LeftClick 1
Delay 1000
FindPic 0,0,,&Attachment:\扫一扫.bmp&,0.9,intX,intY
If intX & 0 And intY & 0 Then
MoveTo intx, inty
LeftClick 1
Delay 1000
自命不凡,其实很落魄个人QQ: 个人爱好群:[加群有惊喜]
按键会员(月)按键会员绑定账号后自动赠送
回复 谢谢了大哥,我今天试了下在容易卡住的地方同时找上一步的图和当前图然后把他循环两次就解决了这个问题了,
按键会员(月)按键会员绑定账号后自动赠送
回复 谢谢了大哥,我今天试了下在容易卡住的地方同时找上一步的图和当前图然后把他循环两次就解决了这个问题了,找图&模拟键盘鼠标MKAssistant(VC++ WINAPI 源代码)
前段时间介绍过相似图片搜索原理一(ahash)
http://blog.csdn.net/lu/article/details/,它是基于内容检索最简单的一种;这里...
得到指定点颜色---- GetPixelColor
以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
主要分析input.c文件
一、输入核心层源码分析1
1、核心模块注册:input_init函数
(1)class_reg...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 按键精灵找不到句柄 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信