通过用户单击或C#中的Windows启动检测应用程序运行

s.k*_*aul 5 c# winforms

我有一个C#WinForm应用程序.目前它从桌面快捷方式运行.但我想在系统启动时添加它.用户可以决定是否在启动时运行.

如果它在系统启动时运行,我想在系统托盘上最小化它,否则它将在任务栏上运行.

有没有办法检查它是否在启动时启动?

Nic*_*ico 7

您的应用程序将无法检测(单独)它是在启动时或正常用户启动时启动的.但是,您可以传递arguments给您的应用程序,然后让您的应用程序正确响应.这是一个基本的例子

首先从program.cs main方法开始.现在默认情况下,您没有看到传入的启动参数.但是,将参数添加string[] argsmain()方法将公开命令参数.如

static class Program
{
    public static bool LaunchedViaStartup { get; set; }

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Program.LaunchedViaStartup = args != null && args.Any(arg => arg.Equals("startup", StringComparison.CurrentCultureIgnoreCase));

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}
Run Code Online (Sandbox Code Playgroud)

现在代码很简单,我们在程序启动主窗体之前为Program所谓的类设置一个静态变量,LaunchedViaStartup检查命令参数是否包含我们的特殊startup参数(通过Linq).这个论点的名称取决于你.

现在我们的主要形式(是基本的)我们可以在应用程序的生命周期内访问此属性.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        MessageBox.Show(this, string.Format("Lanched Via Startup Arg:{0}", Program.LaunchedViaStartup));
    }
}
Run Code Online (Sandbox Code Playgroud)

最后要测试这个,你可以简单地打开Project Properties窗口并设置Command line arguments类似于下面的截图.

在此输入图像描述

最后,为了测试visual studio之外的Startup参数,将启动参数添加到快捷方式,例如下面的屏幕截图.

在此输入图像描述