如果由系统启动,则启动应用程序最小化

时间:2018-06-22 08:46:33

标签: c# windows regedit

我要启动一个最小化或不最小化的应用程序,具体取决于它是由系统在启动时(Windows)启动的,还是不最小化的(如果它是由用户启动的(双击它)。)

到目前为止,我已经制作了一个转换器程序,它将在Windows中启动。我已经用它来成功了。

RegistryKey rk = Registry.CurrentUser.OpenSubKey 
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
rk.SetValue("MyApplicationName", Application.ExecutablePath);
rk.Close();
rk.Dispose();

我仅将这些代码用于启动。我不检查它是否已经在regedit中,因为如果它已经存在,它就不会添加。在将这些代码设置为程序后,我已经重新启动计算机,并且程序在启动时启动,但是它像正常启动一样进入屏幕的中央。我可以检查我的程序是否在启动时由Windows启动并将其设置为启动吗?通常,如果我单击右上角的“ x”,则程序会将自身隐藏在系统托盘中。我必须右键单击->“退出”以实际上关闭程序。

我的问题是:有什么方法可以检查系统(Windows)或用户是如何启动的?

2 个答案:

答案 0 :(得分:1)

由于它们都是由同一用户启动的,因此将很难检测到。或者,您可以在应用程序中使用一个参数来告知它是否开始还原。默认情况下,它会打开窗口,如果设置了参数,则不会显示它。您只需要在注册表中存储的执行命令中添加此参数即可。

以下是一些代码:

Program.cs,您查看是否提供了-minimized参数,并将此信息传递给Form类

using System;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    static class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(args.Contains("-minimized")));
        }
    }
}

Form1.cs:如果最小化的布尔值为true,则开始最小化

使用System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1(bool minimized)
        {
            InitializeComponent();
            if (minimized)
            {
                WindowState = FormWindowState.Minimized;
            }
        }
    }
}

然后,您可以提供-minimized参数来启动程序:

.\WindowsFormsApp1.exe -minimized 或不 .\WindowsFormsApp1.exe

答案 1 :(得分:0)

如果我理解正确,那么您希望最小化启动应用程序,对吧?

在这种情况下,您可能需要添加以下代码:

如果您正在开发WinForms应用

this.WindowState = FormWindowState.Minimized;

如果您正在开发WPF应用程序

this.WindowState = WindowState.Minimized;
相关问题