xp系统中,用户可以创建额外的桌面,这样可以将不同的软件放在不同的桌面运行。问题是,我写的屏幕捕获软件在当自己所在桌面切换到后台,即非当前桌面时,只能捕获到黑屏。而相关函数的返回值却都正常,请问原因何在。

解决方案 »

  1.   

    创建额外的桌面 具体是什么意思?Desktop ? UI?
      

  2.   

    当然,你或许拿OpenGL来举例,隐藏时可以获取到,那是因为它有一个独立的数据缓冲区.
      

  3.   

    正因为它并没有实际的数据到显示器的数据区, 但你捕获时却时捕获这个数据区, 显然没有数据.
    ------------------
    这点我们理解一致,我现在的问题是,如何找出非当前桌面的屏幕信息到底存储在哪,应当是在某一内存区,而WinAPI中没找到能定位这块区域的函数。请问,是否有其他的思路?不会让我搜索整个内存确定吧。^_^
      

  4.   

    to cnzdgs:
    桌面没有显示,无法捕获图象。
    -------
    我理解桌面没有显示,只是导致现在的图像捕获机制不起作用。但只要桌面数据信息在(不在显示器显示区域),我们就可以得到相应的数据,从而还原出桌面信息,也就是说,只要桌面数据在某一处存在(内存或其他地方),就可以捕获。
      

  5.   

    显示过滤驱动?
    winddk中的哪类?或者说src\print下的哪个能达到这个效果?这本不该问,时间紧,任务重,见谅。
      

  6.   

    sorry,看成打印过滤驱动了,帖子又删不了。
    winddk 3790 中未找到display相关的驱动,请指教。
      

  7.   

    过滤驱动都差不多的,就是在API和设备驱动中间的一个中间层。