我想使用DirectX为Windows 7制作动画桌面背景.我正在使用C#,SlimDX和一些P/Invoke导入的Windows API函数.我对原生Windows编程并不擅长,但我在网上找到了一些东西,我相信我需要做的是:
1)找到包含dekstop壁纸的窗口的句柄,将其连接到DirectX设备并绘制到其中.
2)创建一个新的输出窗口,并将其插入桌面壁纸上方但在桌面图标下方.
我试过这两个,但似乎都没有用.如果我从GetDesktopWindow()返回的句柄开始导航Window heirarchy,我可以去桌面 - > WorkerW - > SHELLDLL_DefView - > SysListView32.如果我将DirectX设备连接到此句柄,我可以绘制整个桌面,但它也包含图标.如果我创建一个Windows窗体,使用SetParent()将其父窗口设置为SHELLDLL_DefView,然后使用SetWindowPos来播放其Z顺序,我只能将它放在桌面壁纸后面或桌面+图标前面.
看起来桌面壁纸是包含图标的文件夹视图的背景,因此我想要做的事情无法工作.然后唯一的解决方案是不使用桌面图标,或找到一些替代方案,例如覆盖桌面,然后覆盖包含某个文件夹内容视图的透明窗口.
有没有人知道我应该做什么,甚至不知道我想做什么是可能的?看起来你可以使用GDI绘制到桌面背景(我相信wxSnow程序会这样做),我看到的东西类似于我想要的VLC Media Player在Windows XP下使用DirectX壁纸模式(有趣的是,我似乎无法在我的系统上启用此选项).
谢谢!