小编Jon*_*han的帖子

DirectX桌面

我想使用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壁纸模式(有趣的是,我似乎无法在我的系统上启用此选项).

谢谢!

c# windows directx

19
推荐指数
2
解决办法
6026
查看次数

标签 统计

c# ×1

directx ×1

windows ×1