如何直接在系统托盘中启动应用程序? (.NET C#)

我的意思是当用户启动我的应用程序(exe)。 我希望它直接在系统托盘中启动,而不显示窗口。 像防病毒软件和下载管理器一样,它们默默地在系统托盘中启动和运行。

我想要相同的效果,当用户点击notifyIcon的contextmenustrip的“show”按钮时,只有应用程序应该显示GUI。

我正在使用它,但它没有用

private void Form_Load(object sender, EventArgs e) { this.Hide(); } 

可能我需要在其他没有GUI的类中使用Main()函数,但是有notifyIcon和ContextMenuStrip,其选项将实例化GUI窗口类。 对?

我通常设置这样的方法是修改Program.cs看起来如下所示:

  [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); using (NotifyIcon icon = new NotifyIcon()) { icon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath); icon.ContextMenu = new ContextMenu(new MenuItem[] { new MenuItem("Show form", (s, e) => {new Form1().Show();}), new MenuItem("Exit", (s, e) => { Application.Exit(); }), }); icon.Visible = true; Application.Run(); icon.Visible = false; } } 

使用这个,您不需要担心隐藏而不是关闭表单以及可能导致的所有其他黑客攻击…您也可以制作单例表单而不是每次单击Form时实例化新Form选项。 这是建立起来的东西,而不是最终的解决方案。

您还需要设置通知图标。

手动或通过工具栏(将notifyIcon拖到表单上)创建notifyIcon:

 this.notifyIcon = new System.Windows.Forms.NotifyIcon(components); 

然后将此代码添加到Form_Load()

 // Notify icon set up notifyIcon.Visible = true; notifyIcon.Text = "Tooltip message here"; this.ShowInTaskbar = false; this.Hide(); 

虽然如前所述,这将隐藏它之前的forms。

从这个问题的接受答案来看,解决方案似乎是要改变:

 Application.Run(new Form1()); 

至:

 Form1 f = new Form1(); Application.Run(); 

Main()

您是否在C#中创建了Windows应用程序? 您需要将NotifyIcon控件拖到窗体上,控件将放在窗体下面,因为它在窗体本身没有可视化表示。

然后设置其属性,如图标…

先试试这个……