找回密码
 加入
搜索
楼主: ahphsautoit

关于抓取屏幕坐标点色值(被游戏屏蔽)的问题!

[复制链接]
发表于 2009-4-11 19:58:36 | 显示全部楼层
原帖由 ahphsautoit 于 2009-4-11 18:44 发表
1、心想现在的按键精灵是不是已经增强了呢?于是抱着试一试的心情从网上下载最新版的按键来试用。我是开着游戏窗口的,一运行按键的安装程序,游戏窗口就弹出一个窗口:发现您使用外挂,自动退出!我晕啊!
2、实验 ...

改下进程名或者窗口标题吧....
 楼主| 发表于 2009-4-11 22:25:00 | 显示全部楼层

回复 16# rolaka 的帖子

关于您说的方法,早就用过了,改进程名、窗口名、隐藏进程等等,都没有用的。所以放弃按键精灵已经N久了!
 楼主| 发表于 2009-4-11 22:32:50 | 显示全部楼层
关于您说的UDF截图的我还没有找到,有此是英文的,一下子弄懂是不可能的。我参考了一下论坛上某位朋友做的截图的软件,因为他的源码中一处注释都没有,看起来也很费劲,需要一点一点地把不相干的部分去掉才能慢慢找到截图的部分。
    另外,采用截图的方式似乎过于繁琐了,有没有那种在某个图像控件内同步重绘指定区域图像的命令呢??
    再则,我用上面提到的那位朋友写的截图软件,能把游戏画面截下来,同样是AU3,为什么使用PixelGetColor却采集不到色值呢?费思量。
发表于 2009-4-12 10:35:57 | 显示全部楼层
原帖由 ahphsautoit 于 2009-4-11 22:32 发表
关于您说的UDF截图的我还没有找到,有此是英文的,一下子弄懂是不可能的。我参考了一下论坛上某位朋友做的截图的软件,因为他的源码中一处注释都没有,看起来也很费劲,需要一点一点地把不相干的部分去掉才能慢慢找到 ...

可以用类似放大镜的程序实现在控件上绘图,然后在控件上取色
搜索论坛关键字 放大镜
可以把调用的StretchBlt改成 _WinAPI_BitBlt这样更简单些。

也可以在内存中建立位图,截取图像到内存位图,在内存中取色,这样就不用GUI界面了
 楼主| 发表于 2009-4-12 11:29:10 | 显示全部楼层

回复 19# cnsnc 的帖子

谢谢您的建议,已经实验过了放大镜程序。能够同步重绘游戏窗口中的内容,但是仍然读不出鼠标点的色值。考虑下一步进行在放大镜程序窗口中重绘的画面上来读坐标点的色值看能不能读出来,如果能读出来就成功一大半了。
    另外,我的思路是运用此方法重绘游戏窗口中三个关键区域的图像,从重绘的三个关键区域中来读取需要的色值(控制依据)。需要花时间来解析放大镜程序,拆为己用。具体方法是:将游戏画面中的三个独立的关键区域重绘到控制程序窗口中的三个图像控件内,关键区域直接指定区域坐标而不由鼠标控制(解放鼠标),重绘的画面可以1:1就行了,不用太放大,然后再读取图像控件中需要取其色值的坐标点的色值即可。

[ 本帖最后由 ahphsautoit 于 2009-4-12 11:35 编辑 ]
 楼主| 发表于 2009-4-12 18:54:55 | 显示全部楼层

回复 19# cnsnc 的帖子

OK!设想实施成功!再次感谢 cnsnc !感谢您的指引!
采用在控制窗口内重绘游戏窗口关键区域的方式,成功取得被游戏窗口屏蔽的坐标点色值!以下我需要做的只是把游戏脚本中的相关命令重写一遍就行了!
感谢!!!
 楼主| 发表于 2009-4-13 09:38:05 | 显示全部楼层
出现一个新问题:
每次脚本在运行大概几分至十来分钟的时候,就会出现杂乱的屏闪,先去作用。
试验脚本已发至1楼的附件,该脚本中重绘多图用的是重复代码的方式,正式游戏脚本中用的是循环方式多图。两个脚本都会出现同样的状况。
发表于 2009-4-13 14:56:40 | 显示全部楼层
估计是内存问题,你可以用任务管理器观察你的脚本运行时的内存状况。
把脚本改一下,getdc和ReleaseDC只调用一次,不要重复使用,放在循环外面用,
把StretchBlt和取色放在循环里面。
 楼主| 发表于 2009-4-13 15:32:45 | 显示全部楼层

回复 23# cnsnc 的帖子

嗯。因为我不太清楚getdc和ReleaseDC的用途,所以将它们和StretchBlt等命令放在一起循环了。我会实验一下您说讲的这种方式 。
在看到你的回复前,我已采用另外一种方式解决了此问题:我将重绘命令单独做成一个无边框的强制置顶的小窗口,并重合于主控程序上空白区域,限制每个取色小屏为10x10大小,在小窗口内集成了17个取色小屏,其中一个10x175的用于获取随机任务,其它16个为10x10,用于获取固定区域的关键色值。小窗口在循环N次(屏闪发作前)后自行关闭。主控程序在检测到小窗口关闭后再次将其启动。
 楼主| 发表于 2009-4-13 15:38:58 | 显示全部楼层

回复 23# cnsnc 的帖子

在我给你写24楼回复的时候,我正在实验小窗口的状况。还没有添加自行关闭的命令,也没有进行循环的改动。这次小窗口一直没有出现状况。我猜测,小窗口没有出现状况,和第一次实验的脚本以及游戏脚本相比较,小窗口的窗口特小,且没有其他多余的控件,会和这有关系吗???
发表于 2009-4-13 18:15:04 | 显示全部楼层
原帖由 ahphsautoit 于 2009-4-13 15:32 发表
嗯。因为我不太清楚getdc和ReleaseDC的用途,所以将它们和StretchBlt等命令放在一起循环了。我会实验一下您说讲的这种方式 。
在看到你的回复前,我已采用另外一种方式解决了此问题:我将重绘命令单独做成一个无边框 ...

把简单的问题搞复杂了..........把脚本的缺陷修补好就是了,不要再往复杂里走,没那么烦的
 楼主| 发表于 2009-4-14 07:57:47 | 显示全部楼层

回复 26# cnsnc 的帖子

呵呵,我知道。在路障没有清除前,我也只有选择条条大路通罗马喔!
发表于 2009-8-16 14:37:45 | 显示全部楼层
shuageqian
发表于 2009-8-16 20:31:01 | 显示全部楼层
呵呵,前来学习一个!
发表于 2009-12-14 03:31:45 | 显示全部楼层
学习下,找点钱
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 00:34 , Processed in 0.098588 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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