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

时间:2015-05-05 04:49:46

标签: c# winforms

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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());
    }
}

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

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

startup

最后要测试一下,你可以简单地打开Project Properties窗口并设置public partial class Form1 : Form { public Form1() { InitializeComponent(); MessageBox.Show(this, string.Format("Lanched Via Startup Arg:{0}", Program.LaunchedViaStartup)); } } ,类似于下面的截图。

enter image description here

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

enter image description here

答案 1 :(得分:2)

从启动运行时发送推荐行参数(在快捷方式路径中定义)。

获取应用程序main中的参数,并根据参数做出决定。现在,取决于你如何实现它。

检查MSDN

Here it is for WinForm