4

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

4

4 回答 4

8

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

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

于 2009-10-19T23:09:28.473 回答
3

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

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

希望这有帮助!

于 2011-07-28T15:31:40.597 回答
1

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

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

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

于 2009-10-19T23:10:35.167 回答
0

您可以使用参数调用程序,例如“-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 然后它将开始最小化,当您重新启动计算机时,它也会自动最小化。

于 2015-05-12T22:47:19.463 回答