问题标签 [notification-area]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
986 浏览

windows-7 - Windows 7 任务栏是新的通知区域吗?

我已经看到一些利用新任务栏功能的 Windows 7 应用程序出现在网络上。但是,其中一些应用程序将任务栏视为通知区域。没有前景窗口。所有交互都是通过任务栏按钮完成的(带有叠加层、进度条、跳转列表等)。

就个人而言,比起通知区域,我更喜欢新的任务栏,因为我有能力使用更大的图标,并为用户提供非常熟悉的用户界面和丰富的体验。但我也觉得像上面描述的那些应用程序应该保留在通知区域中。

您如何看待使用 Windows 7 任务栏作为“新通知区域”的应用程序?应该避免吗?

0 投票
1 回答
5117 浏览

delphi - Delphi 中的 Windows 7 样式通知浮出控件

关于 Microsoft 的 Notification Area 建议,我正在寻找想法或 Delphi 组件来实现Notification Area Flyouts

替代文字

第一个“自然”的想法是使用标准的 Delphi 形式,但我面临两个问题:

  1. 我无法使用标准的“BorderStyle”属性获得表单边框行为。尝试使用 GlassFrame 属性以及将 BorderStyle 设置为 bsNone 来“模仿”边框,但是当没有边框时(至少在 Delphi 2007 中)没有 GlassFrame。
  2. 当用户单击表单本身的任何位置时,我无法弄清楚如何关闭表单。昨天我尝试了不同的消息,但没有人按预期工作。

我会感谢任何线索或组件来实现它:)

此致。

贾奇盖特。

附言。在 Win7 (Delphi) 中将通知区域图标转换为程序图标有一个相关的问题。

更新[0] 我仍在寻求建议。@skamradt 的答案看起来非常好,但不幸的是在实践中效果不佳。

update[1] 最后,在调用 SetForegroundWindog 以强制弹出“激活”之后,自动关闭行为与 WM_ACTIVATE 消息一起使用

现在,我正在寻找达到边框行为和视觉样式的建议,因为最接近的行为是通过样式为 WS_POPUP 或 WS_DLGFRAME 来实现的,而最接近的视觉目标是通过将样式设置为 WS_POPUP 或 WS_THICKFRAME 来实现的。

0 投票
3 回答
1848 浏览

delphi - 如何获取通知区域图标的工具提示?

我可以在通知区域用图标枚举应用程序(句柄、pid、路径),我可以控制图标的位置,但我无法获得工具提示。

如何枚举系统托盘图标,包括工具提示?

0 投票
2 回答
2459 浏览

c# - .NET:如何将我的窗口放在通知区域(系统托盘)附近?

我想在通知区域旁边显示一个小弹出窗口。它类似于 Outlook/Skype/Live!Messenger/etc 在显示有关新消息的通知时会执行此操作。在我的情况下,它将有一些输入控件(文本框、日期时间选择器、按钮......),所以一个简单的气泡是行不通的。

当用户有多个显示器和/或任务栏不在屏幕底部时,诀窍是正确执行此操作。我找不到任何可以让我确定任务栏/通知区域的位置和方向的功能。

0 投票
3 回答
7318 浏览

c# - 在通知区域显示一个winform

我想在系统托盘正上方的右下角显示一个winform,

我怎么做?这是我的代码:

0 投票
4 回答
8582 浏览

delphi - 如何检查我的应用程序是否有焦点?

我想要做的是检查我的应用程序是否有焦点,因为如果没有,那么我将在通知区域上方弹出一个警报窗口,向最终用户显示一些消息。

0 投票
1 回答
2505 浏览

c# - 单击通知图标时的备用显示/隐藏窗口

我正在 WPF 中实现一个 Windows 7/Vista 风格的通知区域(“系统托盘”)弹出应用程序。到目前为止,我已经在这里写过我的工作(确定通知图标的位置、禁用调整大小等)。

但是,有一个问题我还没有完全解决:当第二次单击通知图标时隐藏窗口。如果您单击(例如)Vista/7 中的音量图标以显示音量控制,请注意在第二次单击该图标时它会再次隐藏。

我处理了窗口的 Deactivated 事件来隐藏窗口,当点击通知图标时,窗口确实被停用了。但是,单击通知图标当然会显示并激活窗口,因此最终发生的情况是,当鼠标按下时窗口消失,而在释放鼠标时重新出现(完成鼠标单击事件)。

我的第一个想法是我可能会使用通知图标的 MouseDown 事件(我使用的是 System.Windows.Forms.NotifyIcon)并检查当时窗口是否可见 - 如果是,我可以将其解释为用户单击通知图标第二次隐藏窗口。不幸的是,MouseDown 事件似乎在鼠标真正被点击之前不会触发(换句话说,它的工作原理与 MouseClick 事件相同),此时窗口已经被停用并因此被隐藏。这似乎排除了这个解决方案。

我的下一个想法(以及我最终使用的方法)是在窗口被停用时获取光标位置(GetCursorPos)并检查该点是否在通知图标的范围内。同时,我还使用GetForegroundWindow来查找当前活动窗口——如果确实要点击通知图标,它应该是任务栏(类名为Shell_TrayWnd的顶层窗口)或通知区域飞出(类名为 NotifyIconOverflowWindow 的顶级窗口;仅限 Windows 7+)。简而言之,如果光标在通知图标上并且通知区域处于活动状态,我假设用户鼠标按下通知图标以隐藏窗口。如果这些条件为真,那么下面的 MouseClick 事件将不会导致窗口被显示/激活。

但是,此解决方案至少存在一个问题:如果光标悬停在通知图标上并且用户按下 Windows 键打开开始菜单(或使用 Windows 键 + 数字快捷键打开应用程序),我的程序将错误将其解释为通知图标的鼠标按下(因为这些键盘快捷键使任务栏处于活动状态)。这意味着下次用户实际单击通知图标时,将不会显示该窗口。(再次单击通知图标将显示它。)

我希望我写的东西有点道理;如果没有,我很乐意尝试进一步澄清情况。

我很想知道是否有人对如何解决这个问题有任何其他想法。

我怀疑这可能是不可能的:在我看来,本机 Windows 7 通知区域弹出应用程序本身使用简单的计时器实现。在音量控制打开时单击(例如)音量图标只会在窗口停用和鼠标单击之间的时间小于约 2 秒时关闭音量控制。将鼠标按住图标较长时间然后松开将再次显示音量控制,即使它在鼠标按下之前已打开。

0 投票
5 回答
8994 浏览

c++ - 如何检测我的应用程序何时最小化?

我有一个程序可以选择最小化到任务栏的通知区域。为了让它工作,我需要一种可靠的方法来检测用户何时最小化了应用程序。

如何在 C++ 应用程序中使用 Windows API 做到这一点?

0 投票
3 回答
20249 浏览

c# - 如何从 Windows 服务显示通知区域气球和图标?

当用户启动他们的工作站时,我有一个始终运行的 Windows 服务。此 Windows 服务至关重要,我想在发生某些事情(例如服务停止、启动、重新启动等)时在通知区域显示气球通知。

例如:
在此处输入图像描述

另外,有没有办法为我的 Windows 服务显示通知区域图标?

0 投票
1 回答
366 浏览

winapi - 如何显示超过 128 个字符的系统托盘工具提示

根据 MSDN,NOTIFYICONDATA::szTip仅支持 128 个字符的文本。如何解决此限制并显示更长的工具提示文本?