C# - 在系统启动时最小化为托盘

问题描述:

在我的应用程序中,我可以选择在Windows启动时启动应用程序。这很好。我也拥有它,以便在最小化时将应用程序最小化到系统托盘。有没有一种方法可以让它在与Windows同时启动时自动最小化?我能想到的唯一方法是检索系统已启动的时间,并使用该数据确定机器最近是否启动。显然这个理论存在很多缺陷。任何人有任何其他想法如何做到这一点?C# - 在系统启动时最小化为托盘

在程序中实现一个命令行开关,使程序最小化到托盘。当您在Windows启动时启动该程序时,只需包含该开关即可。

http://msdn.microsoft.com/en-us/library/acy3edy3.aspx

+1

很多应用程序都能成功完成这项工作。 MSN Messenger使用'/ background'开关来达到同样的效果。 – adrianbanks

使用命令行参数,例如,/startminimised。在您的应用程序中,当应用程序启动时检查是否存在此开关(使用Environment.GetCommandLineArgs),并在开关存在时自动将其最小化。

然后在您的“启动时运行”选项中,确保应用程序以此开关启动,例如,将运行注册表项或启动组快捷方式设置为myapp.exe /startminimised

然而,当用户运行您的应用程序时,他们不会(通常是!)指定开关,因此该应用程序将显示为一个窗口。

在的WindowState变化表单 “属性”, “最小化”,或代码:

 //After this: 
    InitializeComponent(); 
    //Place this line: 
    WindowState = FormWindowState.Minimized; 

希望这有助于!

+0

除了上面的代码之后,您可以将showintaskbar = false禁用showintaskbar – Arash

你可以用一个参数调用你的程序,例如“-minimized”,然后处理该参数在你的程序:

在你的Program.cs,处理参数,然后传递参数到Form1:

 static void Main(string[] args) 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      if (args.Length != 0){ 
       Application.Run(new Form1(args[0])); 
      } 
      else 
      { 
       Application.Run(new Form1("normalState")); 
      } 
     } 

在你Form1.cs中,你可以调用与传递的参数的功能,并尽量减少应用程序:

public Form1(string parameter) 
    { 
     InitializeComponent(); 
     SetStartup(); //This function will set your app in the registry to run on startup. I'll explain this function below. 
     MinimizeApp(parameter); 
    } 

例如,使用此功能,我用,如果英语新使用-minimized参数启动应用程序,然后它将开始最小化,在任务栏中弹出一个notifyicon图标,并且一个泡泡说应用程序已启动并在后台运行。

public void MinimizeApp(string parameter) 
{ 
    if (parameter == "-minimized") 
    { 
     this.WindowState = FormWindowState.Minimized; 
     notifyIcon1.Visible = true; 
     notifyIcon1.BalloonTipText = "Program is started and running in the background..."; 
     notifyIcon1.ShowBalloonTip(500); 
     Hide(); 
    } 

} 

SetStartup函数将您的程序放入注册表中,以便它在启动时运行。 “C:/programs/app.exe” -minimized然后它会启动最小化,当您重新启动计算机,它也

private void SetStartup(){ 
    Microsoft.Win32.RegistryKey key; 
    key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); 
    key.SetValue(AppName, Application.ExecutablePath.ToString()); 
    string ApplicationPath = "\"" + Application.ExecutablePath.ToString() + "\" -minimized"; 
    key.SetValue("MyApplicationName", ApplicationPath); 
    key.Close(); 
} 
现在,当你与-minimized参数启动程序,例如

开始自动最小化。