如何在所有其他应用程序之上制作类似菜单的表单?

时间:2016-02-29 11:42:09

标签: c# .net windows winapi

我想在C#中创建一个类似于窗口任务栏的菜单栏,但我想知道如何让窗体保持在屏幕顶部,其他程序不会像窗口任务栏一样粘在它上面,当鼠标悬停时在图标上,它将显示如下形式:

Example Image

我这样做了: Here

这就是我想要的here

2 个答案:

答案 0 :(得分:3)

Windows有一个功能,允许您基本上创建停靠在屏幕一侧并始终可见的伪任务栏。很久很久以前,Office团队(可能是公开记录的 for Office团队?)使用它来创建桌面工具栏。

无论如何,它们被称为应用程序桌面工具栏(或“AppBars”),文档为here。要注册一个,请使用ABM_NEW message调用SHAppBarMessage功能。链接文档中提供了完整的示例代码,不幸的是它是用C ++编写的。

要从C#应用程序中使用它,您必须进行P / Invoke。据我所知,它不是由.NET Framework包装的,可能是因为它永远不会被任何人使用。 This CodeProject article似乎已写出必要的P / Invoke定义。我不能保证他们的正确性,但手持文档,例如,你应该能够做一个工作演示。

还有另一个CodeProject文章here,由Arik Poznanski编写,作为使用C#的shell功能的系列文章的一部分。它看起来更加彻底,可能比你需要的更多。

答案 1 :(得分:-1)

设置属性Form.TopMost,除非您有其他程序创建最顶层的窗口。卫生署!