********小女子诚心请教编程高手:如何在自己中程序中游戏抓图?
********小女子诚心请教编程高手:如何在自己中程序中游戏抓图?
---------------------------------------
各位编程高手:老板要我写一个屏幕监视软件,要求能监视游戏屏幕。可我尝试过多种方法抓取游戏图像都不成功或不理想。因此诚心向各位大哥请教。我目前尝试过的方法:
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