如何直接在系统托盘中启动应用程序? (.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控件拖到窗体上,控件将放在窗体下面,因为它在窗体本身没有可视化表示。
然后设置其属性,如图标…
先试试这个……
- Visual Studio Express 2012不在Release文件夹中构建exe
- 我能否以某种方式评估表达式以确定并可能设置null属性?
- DotNetOpenAuth:如何实现一个简单的OpenId提供程序?
- 在ASP.NET中每个用户仅限制一个会话
- 如果我在方法中的using块内返回一个值,那么在返回之前是否使用了对象的处理?
- 如何添加smtp hotmail帐户发送邮件
- 在DetailsView的TemplateField中查找用户控件
- 在.NET Windows应用程序中存储用户设置的首选方法是什么?
- entity framework – 期望’providerInvariantName’参数的非空字符串