注册 登录
编程论坛 汇编论坛

求助:自动捉点颜色的源码应该怎么写?

ye1010 发布于 2008-11-14 07:40, 1324 次点击
各位大虾,我是新手,我想写一段这样的源码:每次运行都会自动抓取屏慕上固定点的颜色并保存,当固定点颜色改变时停止运行。这个代码应该怎么写啊,请知道的大虾教一下,小弟在此先谢过了。
5 回复
#2
cnhanxiao2008-11-14 09:38
在DOS下:
要对VGA卡图形方式深入了解才行。忘了Int10h有没有读点颜色的功能。
一般要先确定当前显示模式(图形模式也分好多)。然后,因为在图形模式下,显存被分作四个页面,它们都占用同一内存地址空间,所以,在任何一刻,程序员只能看到一个页面。希望看到别的页面,则必须通过写VGA卡寄存器,命令显卡切换显存页面。4个页面同样地址字节的同样位,构成屏幕上的一个点——于是就能判定这个点是否改变了色彩。
【说明:以上基于256色VGA卡640*480】

在Windows下:
Win32API应该能很容易实现这个功能。
想底层象DOS那样操作,那需要切入Ring0级。

仅供参考。

[[it] 本帖最后由 cnhanxiao 于 2008-11-14 09:42 编辑 [/it]]
#3
zklhp2008-11-14 12:43
[bo][un]cnhanxiao[/un] 在 2008-11-14 09:38 的发言:[/bo]

在DOS下:
要对VGA卡图形方式深入了解才行。忘了Int10h有没有读点颜色的功能。
一般要先确定当前显示模式(图形模式也分好多)。然后,因为在图形模式下,显存被分作四个页面,它们都占用同一内存地址空间,所以, ...


不知道是用的哪个api 什么时候找个程序反汇编看看
#4
ONEPROBLEM2008-11-14 23:12
不知道用GetPixel函数行不?
#5
zklhp2008-11-15 08:22
[bo][un]ONEPROBLEM[/un] 在 2008-11-14 23:12 的发言:[/bo]

不知道用GetPixel函数行不?


函数功能:该函数检索指定坐标点的像素的RGB颜色值。

    函数原型:;COLORREF GetPixel(HDC hdc, int nXPos, int nYPos)

    参数:

    hdc:设备环境句柄。

    nXPos:指定要检查的像素点的逻辑X轴坐标。

    nYPos:指定要检查的像素点的逻辑Y轴坐标。

    返回值:返回值是该象像点的RGB值。如果指定的像素点在当前剪辑区之外;那么返回值是CLR_INVALID。

    备注:该像素点必须在当前剪辑区的边界之内。并不是所有设备都支持GetPixel函数。应用程序应调用GetDeviceCaps函数来确定指定的设备是否支持该函数。

    速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib。


貌似是 谢谢提醒!
#6
a120306892008-11-18 11:50
1