C#在桌面图标后面设置窗口

假设我在屏幕上的0,0坐标处有一个100px乘100px的空格式。 它没有边框样式。 有没有什么办法让这个定位在桌面上的图标?

我会认为这将涉及过程Progman,因为那是什么包含桌面图标。 但是,不pipe我尝试什么…获得窗口句柄,改变父母等,我似乎无法得到窗口出现在图标后面。

有任何想法吗?

Solutions Collecting From Web of "C#在桌面图标后面设置窗口"

本质上你想要在桌面壁纸上画画。 桌面层次结构如下所示:

"Program Manager" Progman "" SHELLDLL_DefView "FolderView" SysListView32 

这是实际绘制桌面图标的SysListView32 ,所以这就是你必须要挂钩的东西。 而且你不能把你的表格放在上面。 你必须抓住一个WindowDC到那个句柄并在DC上画画。

可以完成 – 已经完成,但是你将会使用很多互操作。 忘记用传统的Winforms表单来做这件事吧。 我不认为我甚至在C#中看到过它,尽管有人用python做过,如果有帮助的话。 我自己并不是一个Python编码器,但代码非常简短易懂。

Google-fu把我带到了这个MSDN论坛的问题:

http://social.msdn.microsoft.com/Forums/en/winformsdesigner/thread/c61d0705-d9ec-436a-b0a6-6ffa0ecec0cc

这是一篇关于使用GetDesktopWindow()或处理桌面句柄的主要陷阱的博客文章(按照您的其他问题: 在桌面上的C#位置窗口 )

http://blogs.msdn.com/oldnewthing/archive/2004/02/24/79212.aspx

你也不想传递GetDesktopWindow()作为你的hwndParent。 如果您创建一个父窗口为GetDesktopWindow()的子窗口,则您的窗口现在被粘贴到桌面窗口。 如果你的窗口然后调用类似MessageBox()的东西,那么这是一个模式对话框,然后上面的规则踢,桌面被禁用,机器敬酒。

无论如何,我怀疑这可能是可以做到的,但是否应该是另外一个问题。

至少在Windows 8中有一个解决这个问题的方法。我以CodeProject上的一篇文章的形式张贴,所以你可以在这里阅读:

http://www.codeproject.com/Articles/856020/Draw-behind-Desktop-Icons-in-Windows

这适用于简单的绘图,Windows窗体,wpf,directx等。该文章中提供的解决方案仅适用于Windows 8。