Wpf 系统托盘弹出窗口7样式

Wpf 系统托盘弹出窗口7样式,wpf,windows-7,system-tray,Wpf,Windows 7,System Tray,我想要这样的东西: (来源:) 此窗口不可调整大小,并在与其相关的系统托盘图标上方对齐 我有这个: 这是可调整大小的,它可以去任何它想去的地方。如果单击Win 7中的音量控制,它总是直接在图标上方弹出。这是理想的 我发现了我认为是在试图解决同样的问题(因为图像已经死了,所以说不出来) 但我使用的是WPF,我不确定如何从我的窗口对象中获取它们引用的这些表单对象。这是我的窗口目前的XAML声明: <Window xmlns="http://schemas.microsoft.co

我想要这样的东西:


(来源:)

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

我有这个:

这是可调整大小的,它可以去任何它想去的地方。如果单击Win 7中的音量控制,它总是直接在图标上方弹出。这是理想的

我发现了我认为是在试图解决同样的问题(因为图像已经死了,所以说不出来)

但我使用的是WPF,我不确定如何从我的窗口对象中获取它们引用的这些表单对象。这是我的窗口目前的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”
导致我的窗口边框消失,所以这没有帮助


谢谢各位,我希望我已经足够全面了。

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

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

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


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

我在这里写了一系列关于这方面的文章(并制作了一个示例项目):


所涵盖的主题包括:在不移除玻璃边框的情况下移除窗口大小调整、查找通知图标的位置(Windows 7使用Shell_NotifyIconGetRect,早期版本使用更粗糙的方法)、查找任务栏停靠对齐方式,以及在有多个屏幕(显示器)时查找正确的工作区域目前虽然我并没有真正写过,但示例代码包含了未启用DWM(read:Aero)的系统的回退(即,以Windows 7通知区域应用程序的样式绘制自定义1像素边框)。

我还可以在单击图标时获得鼠标光标,我可以用每24个像素的模数来近似图标所处的水平。这似乎是重新实现在Windows Vista和7中如此常见的对话框的一种解决方法。这正是为什么在Windows 7中添加了Shell_NotifyIconGetRect API的原因-因为这是一项常见任务,他们将其自动化。