直接在Windows桌面上绘制

直接在Windows桌面上绘制,windows,directx,desktop,aero,Windows,Directx,Desktop,Aero,我想在Windows桌面上播放动画,而不依赖第三方产品,如或。我应该研究哪些API?我从来没有这样做过,但下面是我将采取的方法 通过将dll插入资源管理器 用手抓住把手 使用&,对桌面进行子类化 在您连接的新系统中进行所有精彩的渲染 请注意,破坏桌面窗口可能会锁定您的计算机,因为它的所有已故窗口(即:该用户的每个窗口)都可能受到不利影响 此外,考虑到Windows的um丰富的兼容性历史,请注意那些旨在吸收滥用的假人。特别是,如果GetDesktopWindow实际上没有返回您要查找的桌面窗口,我

我想在Windows桌面上播放动画,而不依赖第三方产品,如或。我应该研究哪些API?

我从来没有这样做过,但下面是我将采取的方法

  • 通过将dll插入资源管理器
  • 用手抓住把手
  • 使用&,对桌面进行子类化
  • 在您连接的新系统中进行所有精彩的渲染
  • 请注意,破坏桌面窗口可能会锁定您的计算机,因为它的所有已故窗口(即:该用户的每个窗口)都可能受到不利影响


    此外,考虑到Windows的um丰富的兼容性历史,请注意那些旨在吸收滥用的假人。特别是,如果GetDesktopWindow实际上没有返回您要查找的桌面窗口,我一点也不会感到惊讶。基本上,您可能需要使用Spy++或类似工具进行一些挖掘。

    我从来没有这样做过,但以下是我将采取的方法

  • 通过将dll插入资源管理器
  • 用手抓住把手
  • 使用&,对桌面进行子类化
  • 在您连接的新系统中进行所有精彩的渲染
  • 请注意,破坏桌面窗口可能会锁定您的计算机,因为它的所有已故窗口(即:该用户的每个窗口)都可能受到不利影响


    此外,考虑到Windows的um丰富的兼容性历史,请注意那些旨在吸收滥用的假人。特别是,如果GetDesktopWindow实际上没有返回您要查找的桌面窗口,我一点也不会感到惊讶。基本上,您可能需要使用Spy++或类似工具进行一些挖掘。

    您可以阅读此线程。。。

    它很长,但在它里面,是一个关于写到桌面的讨论

    希望这有助于


    ~Bolt

    你可以阅读这篇文章。。。

    它很长,但在它里面,是一个关于写到桌面的讨论

    希望这有助于


    ~Bolt

    我几年前在Windows XP中按照你的建议做了,结果失败得很惨。问题是,如果你在桌面上来回(快速)拖动一个窗口,它会在窗口下方使用纯色灰色背景重新绘制,然后一秒钟后它会使用桌面墙纸重新绘制。你最终会看到非常明显的“撕裂”。StarDock DeskScapes声称在Windows XP上运行,所以我想知道他们是如何做到的。对于这种工作,有比Spy++更好的程序吗?撕裂是WndProc实现的产物。考虑双缓冲,以及加快实际BITBLT()到屏幕的技术。启用合成功能的Vista(+)在这种情况下也可能会大有帮助。我认为这种情况是不同的。当你在桌面上拖动一个窗口时,它首先使用纯色重新绘制,然后在上面绘制壁纸。我试着抑制第一次绘制(纯色),但它似乎是硬编码到桌面进程中的,因此会撕裂。我相当确定桌面窗口没有使用任何特殊方法渲染。请注意,使用GCLP_HBRBACKGROUND和SetClassLongPtr可以控制背景色(对于任何窗口类);考虑使用中空刷进一步减轻撕裂。我做了几年前在WindowsXP中提出的建议,失败了。问题是,如果你在桌面上来回(快速)拖动一个窗口,它会在窗口下方使用纯色灰色背景重新绘制,然后一秒钟后它会使用桌面墙纸重新绘制。你最终会看到非常明显的“撕裂”。StarDock DeskScapes声称在Windows XP上运行,所以我想知道他们是如何做到的。对于这种工作,有比Spy++更好的程序吗?撕裂是WndProc实现的产物。考虑双缓冲,以及加快实际BITBLT()到屏幕的技术。启用合成功能的Vista(+)在这种情况下也可能会大有帮助。我认为这种情况是不同的。当你在桌面上拖动一个窗口时,它首先使用纯色重新绘制,然后在上面绘制壁纸。我试着抑制第一次绘制(纯色),但它似乎是硬编码到桌面进程中的,因此会撕裂。我相当确定桌面窗口没有使用任何特殊方法渲染。请注意,使用GCLP_HBRBACKGROUND和SetClassLongPtr可以控制背景色(对于任何窗口类);考虑使用中空刷进一步减轻撕裂。非常有趣的线程。具有讽刺意味的是,我第一次尝试实现这一点也是在2002年左右。小世界:)从那以后,我断断续续地重新审视这个问题,但我一直没有弄明白。你有没有我可以使用的示例源代码?经过这么多年,讨论中的链接似乎断了。不幸的是,我确实注意到链接断了。我根本没有源代码。。。我希望我的谈话至少能激发你的思考。你可能会把它贴到帖子上,然后重新激活它。不用担心,我在找到它时发现了它——它有一些怪癖,但比我做过的任何事情都要深入。非常感谢,你已经解决了一个困扰我很长时间的问题!非常有趣的线索。具有讽刺意味的是,我第一次尝试实现这一点也是在2002年左右。小世界:)从那以后,我断断续续地重新审视这个问题,但我一直没有弄明白。你有没有我可以使用的示例源代码?经过这么多年,讨论中的链接似乎断了。不幸的是,我确实注意到链接断了。我根本没有源代码。。。我希望我的谈话至少能激发你的思考。你可能会把它贴到帖子上,然后重新激活它。不用担心,我在找到它时发现了它——它有一些怪癖,但比我做过的任何事情都要深入。非常感谢,你已经解决了一个问题