在VC中,用findwindow获得指向指定应用程序窗口的指针后,怎么获得其客户区的图像

在VC中,用findwindow获得指向指定应用程序窗口的指针后,如何获得其客户区的图像?
RT

另求一抓取指定程序客户区图片的源码!

------解决方案--------------------
获得窗口后,通过GetDC(hwnd)得到上下文,得到当前显示位图也就很容易了
CDC::GetCurrentBitmap


------解决方案--------------------
// 函数说明: bFull如果是真,则截取整个屏幕否则只截取活动窗口.strPath是保存图片的路径.

// 如果函数成功,则将文件保存在指定的路径,格式为PNG

BOOL CaptureScreen(BOOL bFull, CString strPath)
{
CImage image;
CWnd* pWnd;
CRect rect;
BOOL bStat;
if(bFull)
pWnd = CWnd::GetDesktopWindow();
else
pWnd = CWnd::GetActiveWindow();

ASSERT(pWnd);
if(pWnd == NULL)
return FALSE;

CWindowDC winDC(pWnd);
pWnd-> GetWindowRect(&rect);

int nBPP = winDC.GetDeviceCaps(BITSPIXEL) * winDC.GetDeviceCaps(PLANES);
if(nBPP < 24) nBPP = 24;

bStat = image.Create(rect.Width(), rect.Height(), nBPP);
ASSERT(bStat);
if(!bStat)
return FALSE;

CImageDC imageDC(image);

::BitBlt(imageDC, 0, 0, rect.Width(), rect.Height(), winDC, 0, 0, SRCCOPY);

CString strFull = MakeFilename(strPath);
HRESULT hr = image.Save(strFull);
if(FAILED(hr))
{
TRACE( "Couldn 't Save File: %s, %x\n ", (LPCTSTR)strFull, hr);
return FALSE;
}
return TRUE;
}



// 函数说明:结合路径,自动产生一个文件名

CString MakeFilename(CString& strPath)
{
CString strRet(strPath);
static UINT i=0;
if(strRet.Right(1) != "\\ ")
strRet += "\\ ";

strRet.AppendFormat( "%03.3d.png ", i++);
return strRet;
}



// 引用方法:

CaptureScreen(TRUE, "c:\\ ");


------解决方案--------------------
CWindowDC winDC(pWnd);
pWnd-> GetWindowRect(&rect);
把这两条语句改为:
CClientDC winDC(pWnd);
pWnd-> GetClinetRect(&rect);
------解决方案--------------------
CDC::GetCurrentBitmap
这个能得到图片吗 关注学习
如果不行 最笨的方法就是类似屏幕抓图了
------解决方案--------------------
#include <AtlImage.h>
------解决方案--------------------
截取屏幕就可以了
如果要是dx的话,截取屏幕就不适用了
cimage的类是个开源项目
你可以到googel上一搜索就可以找到源码
------解决方案--------------------
档住的部分没画出来,所以截不住
------解决方案--------------------
我试着做了以下,建了一个对话框的程序,用BitBlt把想抓取窗口的图象拷到自己的程序上,然后再GetPixel,取得一点的象素。
使用FindWindow,GetDC等API