如何运行一个只包含通知区图标的“空白”Windows应用程序?

6
我想制作一个只有通知图标的应用程序。它根本不需要“主”窗体。当我想要实现这样的功能时,我只需创建一个不可见的窗体并运行它,但是否有更“优雅”的方法来实现这一点,我想知道。
通常如何做到这一点?此应用程序不能是Windows服务,因为具有NotifyIcon及其上下文菜单很重要(每个菜单将运行不同的命令)。
谢谢。
3个回答

4

2
请查看这篇博客文章:如何在C#中创建一个没有表单的通知图标

事实证明,它非常容易,以至于有点可笑。您只需创建一个继承iContainer接口的类。当您创建通知图标的实例时,请传递一个容器对象。

它为您提供了通知图标,但不包括上下文菜单。

@devoured - 我不知道。我本来想发帖说我认为你需要一个主窗体,但决定先搜索一下,以确保正确。我遇到了我链接的帖子,它似乎回答了你的问题。我还没有自己尝试过。 - ChrisF
另外,我不知道你可以只使用Application.Run()来使应用程序运行一个空消息循环。 - devoured elysium

0

来自与@ChrisF提到的同一篇博客文章https://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/

解决方案比那更荒谬...

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace DataUploader
{
        static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            NotifyIcon icn = new NotifyIcon();
            icn.Click += new EventHandler(icn_Click);
            icn.Visible = true;
            icn.Icon = new System.Drawing.Icon(@”SomeIcon.ico”);
            Application.Run();
        }

        static void icn_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接