使用NotifyIcon创建的Windows通知显示“ microsoft.explorer.notification”和GUID

时间:2019-04-19 19:04:06

标签: c# wpf notifyicon

我们已经为Windows编写了WPF桌面应用程序。该应用程序在启动时启动,并且大多数在后台运行,但是具有可通过系统托盘访问的UI。有时应用程序需要通知用户某些信息,因此,为此,我们使用NotifyIcon库来生成通知。这是相关代码:

XAML:

<mui:ModernWindow
    ...
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:tb="http://www.hardcodet.net/taskbar" 
    ... >

    <tb:TaskbarIcon
            x:Name="MyAppIcon"
            ...
    </tb:TaskbarIcon>
</mui:ModernWindow>

后面的C#代码:

using Hardcodet.Wpf.TaskbarNotification

public void ShowStartupBalloon(string message)
{
    // show balloon with built-in icon ie 'Info'
    MyAppIcon.ShowBalloonTip(Properties.Resources.App_Title, message, BalloonIcon.Info);
}

通知显示为任务栏附近的小浮动窗口,但是(有时(并非总是))它们包含字符串“ microsoft.explorer.notification”和GUID。

Notification message showing undesirable text and GUID

我们希望消除这些问题,因为它们会使我们的客户感到困惑;许多人认为软件中发生了某种错误。有谁知道如何抑制这种情况,以便仅显示我们提供的通知文本?

2 个答案:

答案 0 :(得分:3)

我也遇到了这个问题。根据我的收集,最下面的文字是Microsoft确保用户知道通知源以及随机程序不能模仿真实Windows通知的方式。包含ToolTipIcon(在您的情况下为信息图标)似乎可以触发这种情况。

因此,您可以通过不指定BalloonTipIcon来完全删除该文本,或者根本不定义该属性,或者将其定义为None:

MyAppIcon.ShowBalloonTip(Properties.Resources.App_Title, message, BalloonIcon.None);

当然,唯一的权衡是您的通知won't have an icon

希望这会有所帮助。

答案 1 :(得分:0)

显示带有自动超时的图标:

public static void ShowBalloon(string title, string body)
{
    // Show with icon
    NotifyIcon ni = new NotifyIcon() { Visible = true, Icon = Properties.Resources.Icon};

    // Timeout is deprecated since Vista
    ni.ShowBalloonTip(0, title, body, ToolTipIcon.None);

    // Dispose on event
    ni.BalloonTipClosed += (sender, e) => ni.Dispose();
}