问题标签 [notifyicon]

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 回答
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 投票
1 回答
1483 浏览

c# - 是否有一种简单的方法可以将复选框添加到气球提示?

是否有一种简单的方法可以在气球提示中添加复选框(或任何其他自定义控件)?

我想为用户提供一个可选的复选框,上面写着“不再显示此消息”。

有问题的气球提示使用 显示NotifyIcon.ShowBalloonTip()

0 投票
1 回答
1098 浏览

vb.net - 系统托盘中显示额外的 NotifyIcon

我的 NotifyIcon 显示一个额外图标的应用程序出现问题。重现它的步骤很简单,但问题是在我们添加的任何实际代码隐藏之后会出现额外的图标。简而言之,点击一个按钮会触发 FooBar() 方法的执行,该方法一直运行良好,但它的主要职责是触发后台工作程序以登录到我们的另一个应用程序。它仅在单击此特定按钮时出现。

奇怪的是,我们有一个 WndProc 方法覆盖,如果我单步执行直到出现额外的 NotifyIcon,它总是在此方法期间出现,因此代码隐藏之外的其他东西必须触发该行为。我们的 WndProc 方法目前是(虽然我不认为它是由 WndProc 引起的):

代码中唯一操作有问题的 NotifyIcon 的地方是在以下事件处理程序中(同样,不要认为这是罪魁祸首,只是为了了解更多信息):

后台工作人员的 DoWork 如下(只是一个登录到我们其他应用程序的类调用,但再次仅供参考):

还有其他人对可能导致此问题的原因或如何进一步调试此问题有任何想法吗?我一直在努力解决这个问题,但没有看到任何模式,所以另一双眼睛将不胜感激。:) 我也在 MSDN winforms 论坛上发布了这个,到目前为止也没有运气。

0 投票
3 回答
4734 浏览

c# - C#、Windows 窗体:在 Click 事件中带有 ShowBalloonTip 的 NotifyIcon 不再触发 DoubleClick 事件

在 Windows Forms/C#/.Net Framework 2.0 中使用 NotifyIcon 时,如果我在MouseClickClick事件中显示气球提示文本,则不会触发任何DoubleClickMouseDoubleClick事件:

如果我双击通知图标,我得到气球提示显示/刷新两次,但没有消息框。

我正在使用 Visual Studio 2010 和 Windows 7 Ultimate 64 位。

提前感谢您的帮助!

0 投票
1 回答
1807 浏览

c# - C# & WPF - 任务栏弹出通知窗口的问题

我设法创建了一个类似于 Messenger 中的任务栏弹出窗口。问题是当它向下移动而不是消失在任务栏后面时,它只是在它后面。

我怎样才能让它消失在任务栏后面?不要忘记在 Windows 7 中任务栏是透明的!

这是我的代码:

编辑:我更改了计时器部分,所以现在我降低了控件的高度并重新定位它。现在的问题是它会闪烁。我该如何解决?

这是代码:

0 投票
1 回答
817 浏览

c# - WPF 应用程序,NotifyIcon (Forms) 的问题

我的托盘图标有问题WPF。现在我使用NotifyIconWindows 窗体,但这个控件不接受 ContextMenu来自WPF. 我必须使用ContextMenufromXAML因为我不会只为Windows.Forms中的这个控件执行其他全球化代码(所有应用程序都在WPF中)并且应用程序必须是强多语言的。如何解决这个问题?

  1. 如何从WPF而不是 Windows窗体Tray制作图标?
  2. 如何ContextMenuWPF绑定到NotifyInfo来自Forms的控件。
  3. 或其他解决此问题的方法。

问候

0 投票
1 回答
675 浏览

c# - XP中的C#通知图标错误

我有一个 WinForm .NET 2.0 框架应用程序,只要不包含 notifyicon 组件,它就可以在 Vista、Win 7 和 XP 中正常工作。如果我将组件放在窗体上并重新编译,Vista 和 Win 7 工作正常,XP 在启动时立即崩溃。我在 program.cs 中放置了一个记录器,以记录它是否曾经到达那里而没有记录。无论我是在 VS2008 还是 VS2010 中编译,都会出现同样的问题。让同事从她的机器上编译项目,并且错误仍然存​​在于 XP 中。

从表单中取出 notifyicon 组件,一切都在 XP 中重新运行。我尝试在其他 .NET 2.0 项目上放置一个通知图标并且它们可以工作,所以我不确定为什么只是这个项目有问题。

在 XP 机器上,我尝试了 .NET 2.0 SP0 和 .NET 2.0 SP2 仍然存在同样的问题。奇怪的...

0 投票
3 回答
3465 浏览

c# - 气球提示问题

你好,

我在我们的应用程序中创建了气球提示。我的问题是所有气球提示都留在任务栏上,需要悬停在上面才能消失。

我的问题是,如何让通知图标在显示后消失?

0 投票
2 回答
2757 浏览

c# - 强制通知图标出现在系统托盘中

我有一个 NotifyIcon 出现在系统托盘中,我想在第一次应用程序空闲时显示一个气球提示(如此处建议:C# 在 application.run() 之后执行代码)但 Idle 事件发生在图标出现之前在系统托盘中,导致气球不出现。如何在调用 ShowBalloonTip 之前强制出现 NotifyIcon?

0 投票
1 回答
1399 浏览

.net - 通知图标动画 vb2008

伙计们,我需要我的应用程序通知图标在应用程序忙时显示动画 gif,在不忙时显示 grascale 图标。我在winxpsp3上使用vb2008。

问题是

  1. 如何在运行时更改通知图标

  2. 如果我在应用程序资源中有一系列图标,我如何从我的代码中引用资源中的特定图标

  3. 如果应用程序图标由不同的图标组合组成,我如何在 ni=otifyicon 中指定我要使用的图标,类似于notifyicon.icon = me.icon,index,其中 index 是编译后的 ico 文件中图标的索引