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

C#在桌面图标后面设置窗口,c#,windows,winapi,handle,C#,Windows,Winapi,Handle,假设我在屏幕上的0,0坐标处有一个100px乘以100px的空表格。它没有边框样式。有没有办法把它放在桌面图标后面 我认为这将涉及到过程程序,因为它包含桌面图标。但不管我怎么努力。。。获取窗口句柄和更改父对象等,我似乎无法使窗口显示在图标后面 有什么想法吗?Google fu让我想到了这个MSDN论坛问题: 这是一篇关于使用GetDesktopWindow()或处理桌面句柄的主要缺陷的博客文章(根据您的另一个问题:) 您也不希望将GetDesktopWindow()作为hwndParent传

假设我在屏幕上的0,0坐标处有一个100px乘以100px的空表格。它没有边框样式。有没有办法把它放在桌面图标后面

我认为这将涉及到过程程序,因为它包含桌面图标。但不管我怎么努力。。。获取窗口句柄和更改父对象等,我似乎无法使窗口显示在图标后面


有什么想法吗?

Google fu让我想到了这个MSDN论坛问题:

这是一篇关于使用GetDesktopWindow()或处理桌面句柄的主要缺陷的博客文章(根据您的另一个问题:)

您也不希望将GetDesktopWindow()作为hwndParent传递。如果创建父窗口为GetDesktopWindow()的子窗口,则窗口现在将粘附到桌面窗口。如果您的窗口然后调用MessageBox()之类的东西,那么这是一个模式对话框,然后上面的规则生效,桌面被禁用,机器被关闭


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

基本上你想在桌面墙纸上画画。桌面层次结构如下所示:

"Program Manager" Progman
  "" SHELLDLL_DefView
    "FolderView" SysListView32
真正绘制桌面图标的是
SysListView32
,所以这就是您必须钩住的东西。你不能把你的表格贴在上面;您必须抓取一个
窗口DC
到该手柄并在DC上绘制


可以完成-它已经完成了,但是您将使用大量互操作。忘了用传统的Winforms表单执行此操作吧。我想我甚至没见过用C#来做这件事,尽管有人用C#来做,如果这有帮助的话。我自己不是python程序员,但代码非常简短且易于理解。

至少对于Windows 8来说,这个问题有一个解决方案。我以一篇关于CodeProject的文章的形式发布了它,因此您可以在这里阅读:


这适用于简单绘图、windows窗体、wpf、directx等。本文中介绍的解决方案仅适用于windows 8

我想这样做的原因是我可以在我的电脑上创建一个小部件系统。有些事情rainmeter就是做不好嘿,我就是那个用Python做的人!;)(看到网络流量从这个链接进入我的博客……碰巧我也是一个so会员,呵呵。)wxSnow在Vista x64上的桌面图标上方而不是后面绘制。未找到页面。你介意提供一些代码吗?或者@FogleBird你愿意帮我吗?太好了!很长一段时间以来,我一直在寻找这样的东西。