我有一个C#WinForm应用程序。目前它从桌面快捷方式运行。但我想在系统启动时添加它。用户可以决定它是否会在启动时运行。
如果它在系统启动时运行,我想在系统托盘上最小化它,否则它将在任务栏上运行。
有没有办法检查它是否在启动时启动?
答案 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));
}
}
,类似于下面的截图。
最后,为了测试visual studio之外的Startup参数,将启动参数添加到快捷方式中,例如下面的屏幕截图。
答案 1 :(得分:2)