相反“永远在上面”

时间:2010-03-03 14:22:59

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

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

事情是,我有无边界应用程序我想在桌面上运行。

我试图找到这个选项,但我发现只有“总是在顶部”,这与我想要达到的目标相反。

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

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

这么多选择......