********小女子诚心请教编程高手:如何在自己中程序中游戏抓图?

redapple_id 2001-08-08 09:22:17
********小女子诚心请教编程高手:如何在自己中程序中游戏抓图?
---------------------------------------

各位编程高手:老板要我写一个屏幕监视软件,要求能监视游戏屏幕。可我尝试过多种方法抓取游戏图像都不成功或不理想。因此诚心向各位大哥请教。我目前尝试过的方法:

1. 在自己的程序中调用 DirectDrawCreate(),然后再调用CreateSurface()捕捉到PRIMARYSURFACE, 我需要抓图的时候调用Lock()。这种情况有时可以成功,但有时无效。

2. 我发现了一个接口:EnumSurfaces(),我想可以枚举surfaces,我这样写代码:
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS ;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE ;
hr = pDDraw4->EnumSurfaces(DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL,&ddsd, NULL, EnumSurfacesCallback4);

但是在游戏运行时,我设置的回调函数不被调用。

小妹用vc写了一年的程序,以前对directX所知不多,问了好多人,我还在新浪的游戏开发论坛上发过贴子,但一直没有解决,昨天我把csdn论坛中的几篇有关directX抓屏的贴子全都看了一遍,但好象最终没有完整解决。这个问题真的这么难吗?我看见<金山游侠>中就实现了这个功能,我想技术上肯定能实现,但我不知道怎么做。因此请各位高手多多指教。如果哪位大侠能帮小妹解决这个问题,我将送他一件小礼物!:-)

RedApple
2001-8-8

我的信箱:redapple_id@sina.com
...全文
350 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt985 2002-01-11
  • 打赏
  • 举报
回复
42230关注! :)
Tasehouny 2001-08-15
  • 打赏
  • 举报
回复
大姐,能给我你的照片吗?佩服!佩服!
Kevin_qing 2001-08-15
  • 打赏
  • 举报
回复
而且这个东西在9x下面使用的截屏方式应该不是一样的。
我还没有试过,最近太忙了
Kevin_qing 2001-08-15
  • 打赏
  • 举报
回复
是这样通讯的
ksknight.exe<->ksdriver.dll<->ksknight.sys

but ksknight.sys里面用到的函数都查不到······是undocument的?

redapple_id 2001-08-15
  • 打赏
  • 举报
回复
to 秋水:我在美国华商资讯(北京)公司.呵呵,我水平很菜呀,还是在版主kevin的指点下才弄懂了一点点.:-) 我还不会写驱动程序,昨天才去书店里买了本书一啃,看不懂~~~~~
至于说分析游侠,我还没有这个本事呀,我是用vc自带的工具depends看了一下.

to 阿甘:别叫大姐啦,感觉好老的...... :-(
Julienjut 2001-08-14
  • 打赏
  • 举报
回复
redapple_id(RedApple) 
你在哪高就呀,我很少发现女生这么厉害的。
你把分析游侠的资料帖上来吧,分享一直了
redapple_id 2001-08-14
  • 打赏
  • 举报
回复
我用vc自带的工具学着分析了一下金山游侠的代码,发觉它有个dll库里调用了很多ioXXXX开头的函数,版主kevin说得对,我想它应该是用驱动程序实现的....
Kevin_qing 2001-08-13
  • 打赏
  • 举报
回复
跟踪跟踪再跟踪,累········
lbqsv 2001-08-13
  • 打赏
  • 举报
回复
To Kevin_qing:
这么看的呀?反编译吗?望赐教!
redapple_id 2001-08-13
  • 打赏
  • 举报
回复
推呀推
Julienjut 2001-08-13
  • 打赏
  • 举报
回复
 Kevin_qing(Kevin) 说的方法是可行的,应该说是一种 API 挂接的方法吧!更改函数入口地址有许多种方法的,《程序员》杂志上有一篇关于变速齿轮的文章讲了不少。
dave75 2001-08-13
  • 打赏
  • 举报
回复
gz
duhualin 2001-08-13
  • 打赏
  • 举报
回复
gz
lbqsv 2001-08-13
  • 打赏
  • 举报
回复
哇,你真行!
Android 2001-08-11
  • 打赏
  • 举报
回复
虽然我不会,但我也要支持你!!!!!!
加油!!!!!!!!!!!!!!
妹妹!!!!!!!!!!!!!!
Kevin_qing 2001-08-11
  • 打赏
  • 举报
回复
好像那个东西是用驱动来截屏幕的。
找到显存映射的地址,然后读内容,我还不会写驱动啊·····
redapple_id 2001-08-11
  • 打赏
  • 举报
回复
kevin版主,有消息了吗? :-)
redapple_id 2001-08-09
  • 打赏
  • 举报
回复
Keving_qing版主:我已经把那个程序发往你的邮箱Zhuolin_Qing@cn.trendmicro.com了。有700多K.
Kevin_qing 2001-08-09
  • 打赏
  • 举报
回复
我自己去下好了
redapple_id 2001-08-09
  • 打赏
  • 举报
回复
to jiach(夕飞云): 我不是高人呀,写vc才一年多.... 很多东西不会,请多多指教!
加载更多回复(8)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧