如果给 窗口 一个 memDC , 他 就可以 把 窗口 绘制 在 这个 memDC 上,那就是 没 问题 了。
可惜 不是 所有 窗口 都 支持 该 技术 (大部分 微软 控件支持)。被自绘的 控件 基本上 不行,(因为 OnPaint 没有 查 有没有 另外给 了一个 DC)

解决方案 »

  1.   


    如果能找到窗口对应的memDC呢???? 这个是关键,或者如何创建?
      

  2.   

    memDC 创建 不难。即:
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);问题在于, 窗口 不 使用 你给的这个 memDC ,他 直接 取 自己的 DC 即 CPaintDC (this);
      

  3.   

    刚又搜索了一下,发现有人说:【在WIN7下面按窗口句柄的HDC是正常的。但是在XP系统下面,如果有窗口在要取的窗口句柄前面的话,那这个截图就不全是内容句柄的图,还有在它之上的窗口图。】我想问一下,关于GetWindowDC 在Winxp和Win7是否是不一样呢? 
      

  4.   

    本帖最后由 VisualEleven 于 2013-08-20 09:10:08 编辑
      

  5.   

    “在WIN7下面可以使用,即使目标窗口上面有遮挡,”
    太好了, 我没有 win7.微软就是 问题多。
      

  6.   

    今天找了一天,终于解决了问题。原来用PrintWindow可以解决啊!!
      

  7.   

    本帖最后由 VisualEleven 于 2013-08-20 09:10:37 编辑
      

  8.   

    不过我测试了一下  
    发现PrintWindow速度好慢啊。有无其他速度较快的呢?????? 或者这个PrintWindow函数实现原理是什么? 我们可以代替他?
      

  9.   

    今天看了一个按键精灵的插件,发现它事先调用一个函数:函数说明:
    1.TransformWindow(窗口句柄)
    功能:转换窗口,对要取后台图色数据的窗口使用该函数后才能取后台图色数据。如果是DX图形绘图的窗口,DX绘图区域必须有部分移到屏幕外,否则无法使用。转换窗口后,有些窗口(特别是大多数游戏的)要等待一会儿才能用其它函数可靠地取到后台图色数据,等待的时间要大于画面两次刷新的时间间隔。转换后到取消转换前,可以无限次使用取到后台图色数据的命令,即通常只需要转换一次。
    参数:
      1)窗口句柄:整型数。貌似他这个函数速度挺快的,不知道是如何转换的呢???? 谁知道原理详细解释一下呢。。谢谢了
      

  10.   

    插件的说明和下载在:http://bbs.anjian.com/thread-107721-1-1.html
      

  11.   

    本帖最后由 VisualEleven 于 2013-08-20 09:10:55 编辑
      

  12.   


    大佬出现了!!  老大你看看除了PrintWindow外,还有其他什么方法能后台截图呢??老大能否看一下,这个插件就可以后台截图,但是他用的不是PrintWIndow,速度很快能否分析分析
    http://bbs.anjian.com/thread-107721-1-1.html
      

  13.   

    32位操作系统(win7)是可以解决截屏被遮挡问题,但64位(win7、windows sever 2008 )还是不行。
      

  14.   

    用OLLYDBG逆向一下就知道怎么做的了呀