【问题标题】:How to put a C# programm (ex WPF or WF or with Mono) under desctop Icons (like a wallpaper)?如何将 C# 程序(exe WPF 或 WCF 或 Mono)放在桌面图标(如墙纸)下?
【发布时间】:2009-10-27 02:27:02
【问题描述】:

如何将 C# 程序(例如 WPF 或 WF)放在桌面图标(如墙纸)下?

  • 我想要在我的 Win 7 上由某个开源 C# 程序制作的 Old Good XP Active Desktop!)

  • 类似这样的东西 - Fences 。 他们有“窗口”出现在图标下方。我不想管理图标 - 只需将我的窗口放在它们下面...顺便说一句,有人知道其他操作系统(Mac 等)中的此类操作吗?

  • 而且我不想像 bumptop

  • 那样自己管理所有图标

【问题讨论】:

  • 您可能想要更好地表达这一点。您希望您编写的程序在运行时显示在桌面图标下方?
  • 是的,我确实希望您编写的程序在运行时出现在桌面图标下方!)

标签: c# wpf windows mono icons


【解决方案1】:

我觉得很有可能,试试这个:

  1. 使用“Progman”类查找窗口句柄。
  2. 在您的应用程序中创建一些窗口(或者,也许,在一些单独的应用程序中,您稍后会看到目的)并关闭它的边框。
  3. 将新创建的窗口的父级设置为桌面句柄。
  4. 将您之前找到的“Progman”窗口的父级设置为您创建的窗口。

桌面将放置在您的应用程序拥有的窗口上,并且可以按照您想要的方式对其进行操作(即,在其下方放置一些东西)。

另外,当拥有桌面的应用程序关闭时,不要忘记恢复桌面的父级。

http://www.pinvoke.net/ 查找 FindWindow、GetClassName 和 SetParent

【讨论】:

    【解决方案2】:

    简短的回答是你不能真正做到(无论如何在托管 C# 中)。如果可能的话,您将需要使用 Interop,并且您可能会调用 Windows 不作为 API 提供的东西。

    ...虽然...正如 Ole Jak 提到的,Stardock 似乎正在以某种方式做到这一点...

    桌面是它自己包含的项目。相同的过程处理图标和这些图标“后面”的壁纸。

    您可以将壁纸更改为不同的图像,并且您过去可以创建一个Active Desktop 来显示 HTML 内容,但在 Vista 中已停止这样做。

    你实际上想做什么?也许还有另一种方法可以达到类似的效果?

    【讨论】:

    • 我想要在我的 Win 7 上由某个开源 C# 程序制作的 Old Good XP Active Desktop!)
    • 问题在于你在谈论操作系统的核心——除非微软希望你这样做,否则很难做到这一点!
    • 你说桌面是核心......嗯......但是对于ex他们stardock.com/products/fences有“窗口”出现在图标下方。我不想管理图标 - 只需将我的窗口放在它们下面......顺便说一句,有人知道其他操作系统(Mac 等)中的此类操作吗?
    • 好吧,那个程序很有趣……我猜他们使用的是一些相当低级的操作,而不是调用一个已建立的 API。老实说,我不知道他们是怎么做到的。也许他们正在删除所有图标并在自己的程序中复制他们的行为?
    【解决方案3】:

    DreamScene 用于 vista。您可以将视频作为资源管理器背景。我不知道你是否可以运行一个 C# 程序来输出背景视频。

    【讨论】:

    • 运行一个C#程序来输出视频并不是那么难,但是如何将它设置为后面,如果我们想与它交互......
    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2012-01-14
    • 2010-11-04
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多