Windows 8 Windows桌面管理器覆盖

Windows 8 Windows桌面管理器覆盖,windows-8,overlay,directx-11,leap-motion,Windows 8,Overlay,Directx 11,Leap Motion,我喜欢使用以下属性制作覆盖: 应至少在Windows 8.1上工作 应该在所有东西的顶部,就像鼠标光标一样 应该包含已经在背景上的像素,比如模糊过滤器 不闪烁 每一点的详细信息: 1) 我假设WDM已激活,并且使用了DirectX 11.2。当然,让它在其他Windows版本上运行会很好,但这没有优先级 2) 问题是,简单地使用WS_EX_TOPMOST,应用程序的菜单就覆盖在我的覆盖上了。在我的例子中,这真的很痛苦,因为我喜欢显示与光标具有相同属性的内容。想象一下,如果打开菜单->不可接受,光

我喜欢使用以下属性制作覆盖:

  • 应至少在Windows 8.1上工作
  • 应该在所有东西的顶部,就像鼠标光标一样
  • 应该包含已经在背景上的像素,比如模糊过滤器
  • 不闪烁
  • 每一点的详细信息:

    1) 我假设WDM已激活,并且使用了DirectX 11.2。当然,让它在其他Windows版本上运行会很好,但这没有优先级

    2) 问题是,简单地使用WS_EX_TOPMOST,应用程序的菜单就覆盖在我的覆盖上了。在我的例子中,这真的很痛苦,因为我喜欢显示与光标具有相同属性的内容。想象一下,如果打开菜单->不可接受,光标突然隐藏

    3) 我喜欢从Windows桌面读取像素,包括Windows应用的任何效果(如模糊),并将此信息用于我的过滤器。如果我添加我的覆盖图,如2所述,我应该能够在下一帧中获得一个新的无障碍背景副本,而不是读取我自己的覆盖图

    4) 如果我直接在Windows桌面上写东西,它会在下一帧立即被Windows本身覆盖。这是不能接受的

    这种应用程序的一个例子是放大镜,它正好具有我需要的所有属性。但在这种情况下,Windows8.1有一个API。相比之下,我喜欢编写一个程序,在桌面上显示一只手(由Leap Motion控制),它会影响Windows桌面,所以你几乎可以“感觉”到你在桌面上移动手的方式

    如果我为自己编写一个小小的DirectX和/或OpenGL应用程序,这一切都非常简单:

    • 将所有常规材质渲染为纹理
    • 使用此纹理作为后期处理过滤器,并将我的所有内容添加到其上
    • 只渲染一个四边形到后缓冲区
    但我喜欢在整个Windows桌面上这样做

    我发现了许多不同的应用程序,但它们对我毫无用处:

    • 那个些自称是最优秀的应用程序仍然落后于菜单。这通常不会造成伤害,但对于类似光标的东西来说是不可接受的
    • 在所有运行的程序中都能自己钩住屏幕的截屏程序很不错,但我想把自己钩住到WDM中
    • 通常情况下,屏幕捕获程序不会将任何内容提取到后缓冲区,因此它们会为每一帧获取一个新的无障碍后缓冲区
    我的问题可以归结为:如何为Windows8.1编写自己的放大镜

    我担心我唯一严肃的选择是将自己与WDM挂钩,这是我试图避免的

    我很高兴听到关于如何实现这一点的任何想法,或是对正在执行我描述的应用程序的提示