0

我想要这样的东西:

托盘弹出
(来源:cybernetnews.com

此窗口不可调整大小,并在与其相关的系统托盘图标上方对齐。

我有这个:

托盘弹出

这是可调整大小的,它可以随心所欲。如果您在 Win 7 中单击音量控制,它总是会直接在图标上方弹出。这是理想的。

我发现了这个参考资料,我认为它试图解决同样的问题(虽然图像已经死了,但无法分辨),

但我正在使用 WPF,但我不确定如何从我的 Window 对象中获取它们引用的这些 Form 对象。这是目前我的窗口的 XAML 声明:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Class="WirelessControl.Window1"
x:Name="Window"
Title="Window1"
Width="260" Height="370" mc:Ignorable="d" WindowStyle="None"></Window>

我觉得基于这在 Windows 中的普遍性,必须有一种相当简单的方法来做到这一点。

ResizeMode="NoResize"导致我的窗口边框消失,所以这没有帮助。

谢谢大家,我希望我足够全面。

4

3 回答 3

5

您可以使用Shell_NotifyIconGetRect来检索通知图标的位置。然后,您可以重新定位窗口以匹配该位置。这就是音量控制 UI 的作用。不幸的是它只适用于Win7。

如果您需要在较旧的操作系统上工作,您可以在 NIN_BALLOONSHOW 消息时获取鼠标光标位置 - 这就是音量控制 UI 过去所做的。

于 2010-06-08T03:31:10.280 回答
3

我在这里写了一系列关于这样做的帖子(并制作了一个示例项目):http: //blog.quppa.net/2011/01/03/windows-7-style-notification-area-applications-in- wpf-recap-sample/

涵盖的主题包括在不移除玻璃边框的情况下移除窗口大小调整、查找通知图标的位置(在 Windows 7 中使用 Shell_NotifyIconGetRect 和在早期版本中使用更老套的方法)、找到任务栏停靠对齐并找到正确的工作区域是否存在多个屏幕(监视器)。虽然我并没有真正写过它,但示例代码包括未启用 DWM(读取:Aero)的系统的后备(即,以 Windows 7 通知区域应用程序的样式绘制自定义 1 像素边框)。

于 2011-01-03T13:30:24.453 回答
0

我在这篇文章中回答了一个和你一样的问题

唯一的问题是调整大小的光标仍然可见。我认为您可以通过操纵窗口的消息循环来隐藏它们。

于 2010-06-01T15:59:15.180 回答