【问题标题】:C# - Minimize to tray at system startupC# - 在系统启动时最小化到托盘
【发布时间】:2010-12-08 04:13:18
【问题描述】:

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

【问题讨论】:

    标签: c# startup system-tray minimize


    【解决方案1】:

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

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

    【讨论】:

    • 很多应用程序都成功地做到了这一点。 MSN Messenger 使用/background 开关来实现相同的效果。
    【解决方案2】:

    使用命令行参数,例如/开始最小化。在您的应用中,在应用启动时检查是否存在此开关(使用Environment.GetCommandLineArgs),如果存在则自动最小化。

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

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

    【讨论】:

      【解决方案3】:

      在 WindowState 中的表单“属性”更改为“最小化”,或在代码中:

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

      希望对您有所帮助!

      【讨论】:

      • 另外你可以禁用 showintaskbar 并在上面的代码后面加上 showintaskbar=false
      【解决方案4】:

      您可以使用参数调用您的程序,例如“-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 参数启动应用程序,那么它将开始最小化,任务栏中会弹出一个通知图标,并显示一个气泡,说明应用程序已启动并在后台运行。

      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 函数将您的程序放入注册表,因此它会在启动时运行。

      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 参数启动你的程序时,例如:“c:/programs/app.exe” -minimized 然后它会开始最小化,当你重新启动计算机时,它也会自动最小化。

      【讨论】:

        猜你喜欢
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        相关资源
        最近更新 更多