.net 如何在通知区域中创建丰富的工具提示和丰富的引出序号

.net 如何在通知区域中创建丰富的工具提示和丰富的引出序号,.net,windows,winapi,notification-area,balloon-tip,.net,Windows,Winapi,Notification Area,Balloon Tip,我一直在想,无论何时调用该类的方法,都会得到如下气球工具提示: 图1:标准引出序号工具提示 一些应用程序和Microsoft产品能够显示的不仅仅是那些“简单”的气球提示。 以下是一些示例: 图2:Windows更新气球工具提示 (来源:) 图3:硬件驱动程序安装气球工具提示 图4:硬件移除工具提示(程序:USB安全移除) 仔细看看图2、图3和图4,就会发现它们不是标准的气球工具提示 图2具有不同的形状,可能与设置区域属性不同。它还有一个自定义图标,比标准的图标大得多 图3使用标准

我一直在想,无论何时调用该类的方法,都会得到如下气球工具提示:


图1:标准引出序号工具提示



一些应用程序和Microsoft产品能够显示的不仅仅是那些“简单”的气球提示。
以下是一些示例:

图2:Windows更新气球工具提示



(来源:)

图3:硬件驱动程序安装气球工具提示



图4:硬件移除工具提示(程序:USB安全移除)



仔细看看图2、图3和图4,就会发现它们不是标准的气球工具提示

图2具有不同的形状,可能与设置
区域
属性不同。它还有一个自定义图标,比标准的图标大得多

图3使用标准形状(我想),但它有一个自定义图标,不用说,它比默认大小大

图4使用标准,但形状不同


我的问题是如何创建在.NET的通知区域中看到的任何“丰富”气球工具提示?我可以处理WinAPI,也可以生成必要的输出。

请检查以下内容:

www.codeproject.com/KB/WPF/WPF_notifyicon.aspx

另一个选择是制作自己的通知表单气球, 然后,您将收到带有花卉背景和粉色边框的通知:) 顺便说一句:它也可以有一些功能

如本例所示:


您必须使用Win32函数。可以将结构的dwInfoFlags成员设置为NIIF\u USER,以便为引出序号工具提示使用自定义图标

在Windows XP Service Pack 2及更高版本上,您可以使用hIcon成员指定自定义图标


在Windows Vista和更高版本上,NotifyIConda结构包含附加成员hBalloonIcon。如果已将cbSize成员设置为扩展NOTIFYICONDATA结构的正确大小,则可以使用此成员指定自定义图标。

我的“好看”并没有告诉我这一点。你的外表有什么不同?是的,它们使用大的自定义图标。自WindowsXPSP2以来,它就一直受到支持。使用创建它们。您实际上不需要做所有这些,也不需要使用WPF。Windows内置了对此的支持。Windows API能够。。。我没有找到一个强大而简单的方法。你有什么想法?
void notifyIcon_MouseMove(object sender, MouseEventArgs e)
    {
        if (!this.Visible)
        {
            ShowPopup();
        }
    }

    Timer t = new Timer();
    private void ShowPopup()
    {
        Rectangle rect = Screen.GetWorkingArea(new Point(Screen.PrimaryScreen.Bounds.Right, Screen.PrimaryScreen.Bounds.Bottom));
        this.Top = rect.Bottom - this.Height;
        this.Left = rect.Right - this.Width;
        this.Visible = true;

        t.Interval = 4000;
        t.Tick += new EventHandler(t_Tick);
        t.Start();
    }

    void t_Tick(object sender, EventArgs e)
    {
        t.Stop();
        Visible = false;
    }

    private void Form1_Click(object sender, EventArgs e)
    {
        this.Visible = false;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        notifyIcon.Visible = false;
        notifyIcon.Dispose();
    }