Pergunta

No meu aplicativo, tenho a opção de iniciá-lo quando o Windows for iniciado.Isso funciona muito bem.Também tenho para que, ao ser minimizado, o aplicativo seja minimizado para a bandeja do sistema.Existe uma maneira de minimizá-lo automaticamente quando inicializado ao mesmo tempo que o Windows?A única maneira que consegui pensar é recuperar a quantidade de tempo que o sistema está ligado e usar esses dados para decidir se a máquina foi iniciada recentemente.Obviamente há muitas falhas nessa teoria.Alguém tem alguma outra idéia de como isso poderia ser feito?

Foi útil?

Solução

Implemente uma troca de linha de comando em seu programa que faz com que seu programa minimize para a bandeja. Quando você inicia o programa com o Windows Startup, basta incluir o switch.

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

Outras dicas

Na sua forma "Propriedades" no WindowState Alteração para "Minimizada" ou no código:

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

Espero que isso ajude!

Use um argumento da linha de comando, por exemplo, Startminimised. Na sua verificação de aplicativos para a presença deste interruptor (usando Environment.GetCommandLineArgs) quando o aplicativo inicia e minimize automaticamente se a chave estiver presente.

Em seguida, na sua opção "Executar no startup", verifique se o aplicativo é iniciado com este switch, por exemplo myapp.exe /startminimised.

Quando o usuário executar seu aplicativo, no entanto, eles não (normalmente!) Especifique o comutador, para que o aplicativo apareça como uma janela.

Você pode chamar seu programa com um parâmetro, por exemplo "-minimizado" e então manipular esse parâmetro em seu programa:

No seu program.cs, manipule o parâmetro e passe-o para o 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"));
            }
        }

No seu Form1.cs, você pode chamar uma função com o parâmetro passado e minimizar o aplicativo:

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

Por exemplo, com esta função que usei, se você iniciar o aplicativo com o parâmetro -minimized, ele iniciará minimizado, um ícone de notificação aparecerá na barra de tarefas e um balão informando que o aplicativo foi iniciado e executado em segundo plano.

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

}

A função SetStartup coloca seu programa no registro, para que ele seja executado na inicialização.

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

Agora, quando você inicia seu programa com o parâmetro -minimized, por exemplo:"c:/programs/app.exe" -minimized então ele iniciará minimizado e, quando você reiniciar o computador, ele também iniciará automaticamente minimizado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top