【问题标题】:Opposite of "always on top"与“永远领先”相反
【发布时间】:2011-01-23 05:46:27
【问题描述】:

我想将我的应用程序设置为桌面级别,例如 Windows 小工具。这有可能实现吗?

问题是,我有想在桌面上运行的无边界应用程序。

我试图找到该选项,但我发现只有“始终处于领先地位”,这与我想要实现的目标相反。

【问题讨论】:

  • 有什么原因不能写成windows小工具
  • 当您为应用程序设计新的 UI 模式时,您很可能最终会被用户讨厌。 “为什么那个家伙让这个应用程序没有边界??我无法调整它的大小,它在我的怪物屏幕上如此之小。真是个白痴!”最好的办法是找到人们喜欢和喜欢的常见 UI 模式(例如小工具、基于托盘图标的应用程序、Windows 服务、计划任务、最小化到托盘并显示通知弹出窗口的应用程序等)使用它。
  • @rick:对于 Windows 小工具来说太复杂了。 :) @Adam:是他,不是她 ;)
  • @Will:应用旨在看起来像一个小工具,在桌面级别上运行,并让用户认为它与 Windows 桌面自然集成。
  • @danijel 只是它没有与桌面集成,不是一个小工具,并且不会像它们中的任何一个一样运行。因此,当用户希望您的应用程序出现在小工具库中时(它不会),或者如果他们认为它的控制方式与其他桌面功能的控制方式相同(祝您好运),他们最终会讨厌您.不要试图欺骗您的用户,而是向他们展示一个有用的应用程序怎么样?这种想法......它让我感到困惑。

标签: c# .net wpf windows windows-desktop-gadgets


【解决方案1】:

好旧的SetWindowPos 支持 HWND_BOTTOM 将您的应用程序放置在顺序中的最后一个。 要在 C# 中使用它,请查看 PInvoke.Net

【讨论】:

    【解决方案2】:

    编写应用程序,使其作为服务在后台运行,然后实现一个实际的 Windows Gadget 作为前端?

    【讨论】:

      【解决方案3】:

      我认为没有办法像往常一样做到这一点。你想在图标下运行你的应用程序吗?做一个真正的后台应用程序的唯一方法是替换 explorer.exe,但是你不会看到图标和任务栏。

      【讨论】:

      • 我希望我的应用与桌面图标处于同一级别,而不是在它们之下。
      【解决方案4】:

      您可以通过创建 XBAP 来使用 WPF 实现实际的 Windows 小工具。只需添加一个 gadget.xml 文件和一个仅包含加载 XBAP 的 IFRAME 的 .html 文件。这样,您的 WPF 应用程序实际上就是一个小工具,并且会自动遵循所有规则。

      另一种选择是使用Windows Sidebar Styler。这需要与您的软件一起安装其他软件,但还允许您在没有代码签名证书、用户授权等的情况下执行您在 XBAP 沙箱中无法执行的操作。

      第三种选择是创建一个使用 HTML 中可识别的东西(例如特定背景颜色)的小工具,然后当您的 .exe 启动时,在资源管理器下扫描具有您正在寻找的属性的 hWnd,将自己注入到 Explorer.exe 进程中,并将您的窗口设置为它的子窗口。

      第三个选项的一个变体是不注入 Explorer.exe,而是维护您的 Z 索引和位置(使用 SetWindowPos)来跟踪您找到的 hWnd 的 Z 索引和位置。

      这么多选择...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        • 2012-10-19
        • 1970-01-01
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多